
List of Message Topics
======================

.. DO NOT EDIT THIS DOCUMENT.

.. It is autogenerated from fedmsg/doc_utilities.py

This document lists all the topics coming out the Fedora
Infrastructure fedmsg bus.  Example messages are included
as well as descriptions and sample output from ``fedmsg.meta``.

.. note:: All topics from Fedora Infrastructure are prefixed with
   ``org.fedoraproject.prod.``, but the :term:`topic_prefix` is omitted here
   for brevity.  For instance, the item listed as ``git.branch`` will
   actually be broadcast as ``org.fedoraproject.prod.git.branch``.

.. note:: Message bodies can contain some useful information, but be wary.
   We have done as good a job as we can *securing* fedmsg, but it is still
   a new system.  If you receive a message from pkgdb claiming that "ralph"
   is the new owner of the kernel, you should still *check* with the *actual*
   pkgdb service that this is the case.  Write code against fedmsg messages
   as a tip, but always check the authoritative source before taking any
   programmatic action.


ansible
-------

ansible.playbook.complete
~~~~~~~~~~~~~~~~~~~~~~~~~

These messages are published when an admin finishes an ansible
playbook run.  We use that system to manage the servers that
run fedoraproject.org.  Here's an example with a playbook that has been
checked into our SCM repo.

.. code-block:: python

    { 'i': 2,
      'msg': { 'playbook': '/srv/web/infra/ansible/playbooks/groups/badges-backend.yml',
               'results': { 'badges-backend01.phx2.fedoraproject.org': { 'changed': 1,
                                                                         'failures': 0,
                                                                         'ok': 56,
                                                                         'skipped': 9,
                                                                         'unreachable': 0},
                            'badges-backend01.stg.phx2.fedoraproject.org': { 'changed': 1,
                                                                             'failures': 0,
                                                                             'ok': 56,
                                                                             'skipped': 9,
                                                                             'unreachable': 0}},
               'userid': 'ralph'},
      'timestamp': 1375753955.771203,
      'topic': 'org.fedoraproject.prod.ansible.playbook.complete',
      'username': 'root'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - ansible.playbook.complete

- :func:`fedmsg.meta.msg2subtitle`

  - ralph's playbooks/groups/badges-backend.yml playbook run completed

- :func:`fedmsg.meta.msg2link`

  - http://infrastructure.fedoraproject.org/cgit/ansible.git/tree/playbooks/groups/badges-backend.yml

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/ansible.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['playbooks/groups/badges-backend.yml', 'inventory/badges-backend01.stg.phx2.fedoraproject.org', 'inventory/badges-backend01.phx2.fedoraproject.org'])``



ansible.playbook.complete
~~~~~~~~~~~~~~~~~~~~~~~~~

These messages are published when an admin finishes an ansible
playbook run.  We use that system to manage the servers that
run fedoraproject.org.  Here's an example with a playbook that is not
actually checked into our SCM repo.

.. code-block:: python

    { 'i': 2,
      'msg': { 'playbook': '/home/fedora/ralph/ansible/playbooks/groups/badges-backend.yml',
               'results': { 'badges-backend01.phx2.fedoraproject.org': { 'changed': 1,
                                                                         'failures': 0,
                                                                         'ok': 56,
                                                                         'skipped': 9,
                                                                         'unreachable': 0},
                            'badges-backend01.stg.phx2.fedoraproject.org': { 'changed': 1,
                                                                             'failures': 0,
                                                                             'ok': 56,
                                                                             'skipped': 9,
                                                                             'unreachable': 0}},
               'userid': 'ralph'},
      'timestamp': 1375753955.771203,
      'topic': 'org.fedoraproject.prod.ansible.playbook.complete',
      'username': 'root'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - ansible.playbook.complete

- :func:`fedmsg.meta.msg2subtitle`

  - ralph's badges-backend.yml playbook run completed

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/ansible.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['inventory/badges-backend01.stg.phx2.fedoraproject.org', 'uncontrolled-playbooks/badges-backend.yml', 'inventory/badges-backend01.phx2.fedoraproject.org'])``



ansible.playbook.start
~~~~~~~~~~~~~~~~~~~~~~

These messages are published when an admin begins an ansible
playbook run.  We use that system to manage the servers that
run fedoraproject.org.

.. code-block:: python

    { 'i': 1,
      'msg': { 'check': False,
               'extra_vars': { },
               'inventory': '/srv/web/infra/ansible/inventory/',
               'playbook': '/srv/web/infra/ansible/playbooks/groups/badges-backend.yml',
               'playbook_checksum': False,
               'userid': 'ralph'},
      'timestamp': 1375753735.32427,
      'topic': 'org.fedoraproject.prod.ansible.playbook.start',
      'username': 'root'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - ansible.playbook.start

- :func:`fedmsg.meta.msg2subtitle`

  - ralph started an ansible run of playbooks/groups/badges-backend.yml

- :func:`fedmsg.meta.msg2link`

  - http://infrastructure.fedoraproject.org/cgit/ansible.git/tree/playbooks/groups/badges-backend.yml

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/ansible.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['playbooks/groups/badges-backend.yml'])``



askbot
------

askbot.post.delete
~~~~~~~~~~~~~~~~~~

Messages with the ``askbot.post.delete`` topic get sent when either
a question or an answer are deleted from `Ask Fedora
<https://ask.fedoraproject.org/questions>`_.  The example here is one
of an **answer** being deleted.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'instance': { 'comment_count': 0,
                             'pk': 12,
                             'post_type': 'answer',
                             'summary': 'oh, ok.. coolio\n ...',
                             'text': 'oh, ok.. coolio',
                             'vote_down_count': 0,
                             'vote_up_count': 0},
               'thread': { 'pk': 7,
                           'tagnames': [''],
                           'title': 'test 3 is a charm'},
               'topmost_post_id': 10},
      'timestamp': 1359949257.459819,
      'topic': 'org.fedoraproject.prod.askbot.post.delete',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - askbot.post.delete

- :func:`fedmsg.meta.msg2subtitle`

  - ralph deleted an answer on 'test 3 is a charm'

- :func:`fedmsg.meta.msg2link`

  - https://ask.fedoraproject.org/question/10/

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/ask_fedora.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['threads/7'])``



askbot.post.delete
~~~~~~~~~~~~~~~~~~

Messages with the ``askbot.post.delete`` topic get sent when either
a question or an answer are deleted from `Ask Fedora
<https://ask.fedoraproject.org/questions>`_.  The example here is one
of an **question** being deleted.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'instance': { 'comment_count': 1,
                             'pk': 10,
                             'post_type': 'question',
                             'summary': 'this is a test message.\n ...',
                             'text': 'this is a test message.',
                             'vote_down_count': 0,
                             'vote_up_count': 0},
               'thread': { 'pk': 7,
                           'tagnames': [''],
                           'title': 'test 3 is a charm'},
               'topmost_post_id': 10},
      'timestamp': 1359949397.539748,
      'topic': 'org.fedoraproject.prod.askbot.post.delete',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - askbot.post.delete

- :func:`fedmsg.meta.msg2subtitle`

  - ralph deleted the question 'test 3 is a charm'

- :func:`fedmsg.meta.msg2link`

  - https://ask.fedoraproject.org/question/10/

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/ask_fedora.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['threads/7'])``



askbot.post.edit
~~~~~~~~~~~~~~~~

Messages get emitted on this topic anytime a question is updated.
An 'update' includes a new question, a new answer, and a modification
to either.  *This* example is one of a **new answer** being posted to
an `Ask Fedora <https://ask.fedoraproject.org/questions/>`_ question.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'created': True,
               'diff': 'I know the answer\n\nlololololol I do!     I swear.\n ...',
               'newly_mentioned_users': ['lmacken'],
               'post': { 'comment_count': 0,
                         'pk': 5,
                         'post_type': 'answer',
                         'summary': 'I know the answer\n\nlololololol I do!     I swear.\n ...',
                         'text': 'I know the answer\r\n\r\nlololololol I do!     I swear.',
                         'vote_down_count': 0,
                         'vote_up_count': 0},
               'thread': { 'pk': 1,
                           'tagnames': ['cool'],
                           'title': 'watwatwatwata'},
               'timestamp': 1359946481.0,
               'topmost_post_id': 1},
      'timestamp': 1359946482.179817,
      'topic': 'org.fedoraproject.prod.askbot.post.edit',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - askbot.post.edit

- :func:`fedmsg.meta.msg2subtitle`

  - ralph suggested an answer to the question 'watwatwatwata'

- :func:`fedmsg.meta.msg2link`

  - https://ask.fedoraproject.org/question/1/

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/ask_fedora.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['lmacken', 'ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['threads/1', 'tags/cool'])``



askbot.post.edit
~~~~~~~~~~~~~~~~

Messages get emitted on this topic anytime an `Ask Fedora
<https://ask.fedoraproject.org/questions/>`_ question is updated.
The snippet we have below is an example of a user posting a brand **new
question** to `Ask Fedora <https://ask.fedoraproject.org/questions/>`_.

.. code-block:: python

    { 'i': 2,
      'msg': { 'agent': 'ralph',
               'created': True,
               'diff': 'lololol\n\nthis is my entry, I hope that you like it so very much.\n ...',
               'newly_mentioned_users': [],
               'post': { 'comment_count': 0,
                         'pk': 4,
                         'post_type': 'question',
                         'summary': 'lololol\n\nthis is my entry, I hope that you like it so very much.\n ...',
                         'text': 'lololol\r\n\r\nthis is my entry, I hope that you like it so very much.',
                         'vote_down_count': 0,
                         'vote_up_count': 0},
               'thread': { 'pk': 3,
                           'tagnames': ['lolol'],
                           'title': 'I have a new question'},
               'timestamp': 1359946267.0,
               'topmost_post_id': 3},
      'timestamp': 1359946267.401213,
      'topic': 'org.fedoraproject.prod.askbot.post.edit',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - askbot.post.edit

- :func:`fedmsg.meta.msg2subtitle`

  - ralph asked the question 'I have a new question'

- :func:`fedmsg.meta.msg2link`

  - https://ask.fedoraproject.org/question/3/

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/ask_fedora.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['threads/3', 'tags/lolol'])``



askbot.post.edit
~~~~~~~~~~~~~~~~

Messages get emitted on this topic anytime a question is updated.
An 'update' includes a new question, a new answer, and a modification
to either.  *This* example is one of a **answer being modified** on
`Ask Fedora <https://ask.fedoraproject.org/questions/>`_.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'created': False,
               'diff': '<p>this is my test <del>answer</del><ins>answer.ok?</ins></p>\n',
               'newly_mentioned_users': [],
               'post': { 'comment_count': 0,
                         'pk': 6,
                         'post_type': 'answer',
                         'summary': 'this is my test answer.    ok?\n ...',
                         'text': 'this is my test answer.    ok?',
                         'vote_down_count': 0,
                         'vote_up_count': 0},
               'thread': { 'pk': 3,
                           'tagnames': ['lolol'],
                           'title': 'I have a new question'},
               'timestamp': 1359947977.0,
               'topmost_post_id': 3},
      'timestamp': 1359947978.125892,
      'topic': 'org.fedoraproject.prod.askbot.post.edit',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - askbot.post.edit

- :func:`fedmsg.meta.msg2subtitle`

  - ralph updated an answer to the question 'I have a new question'

- :func:`fedmsg.meta.msg2link`

  - https://ask.fedoraproject.org/question/3/

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/ask_fedora.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['threads/3', 'tags/lolol'])``



askbot.post.edit
~~~~~~~~~~~~~~~~

Messages get emitted on this topic anytime a question is updated.
An 'update' includes a new question, a new answer, and a modification
to either.  *This* example is one of a **question being modified** on
`Ask Fedora <https://ask.fedoraproject.org/questions/>`_.

.. code-block:: python

    { 'i': 2,
      'msg': { 'agent': 'ralph',
               'created': False,
               'diff': '<p>alskdfj... the diff is actually here',
               'newly_mentioned_users': [],
               'post': { 'comment_count': 0,
                         'pk': 2,
                         'post_type': 'question',
                         'summary': 'alskdfjalskdjf alkjasdalskdjf ...',
                         'text': 'alskdfjalskdjf alkjasdalskdjf ...',
                         'vote_down_count': 0,
                         'vote_up_count': 0},
               'thread': { 'pk': 2,
                           'tagnames': ['town'],
                           'title': 'alskdjflaksjdf lakjsf a'},
               'timestamp': 1359947640.0,
               'topmost_post_id': 2},
      'timestamp': 1359947640.986208,
      'topic': 'org.fedoraproject.prod.askbot.post.edit',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - askbot.post.edit

- :func:`fedmsg.meta.msg2subtitle`

  - ralph updated the question 'alskdjflaksjdf lakjsf a'

- :func:`fedmsg.meta.msg2link`

  - https://ask.fedoraproject.org/question/2/

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/ask_fedora.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['threads/2', 'tags/town'])``



askbot.post.flag_offensive.add
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Sent when a user flags an `Ask Fedora
<https://ask.fedoraproject.org/questions>`_ question or answer
as "offensive".

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'instance': { 'comment_count': 0,
                             'pk': 3,
                             'post_type': 'question',
                             'summary': 'I think I know... totally.    asldkj for sure.\n ...',
                             'text': 'I think I know... totally.    asldkj for sure.',
                             'vote_down_count': 0,
                             'vote_up_count': 1},
               'thread': { 'pk': 2,
                           'tagnames': ['town', 'ohok'],
                           'title': 'alskdjflaksjdf lakjsf a'},
               'topmost_post_id': 2},
      'timestamp': 1359947156.346592,
      'topic': 'org.fedoraproject.prod.askbot.post.flag_offensive.add',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - askbot.post.flag_offensive.add

- :func:`fedmsg.meta.msg2subtitle`

  - ralph flagged a question as offensive!

- :func:`fedmsg.meta.msg2link`

  - https://ask.fedoraproject.org/question/2/

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/ask_fedora.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['threads/2', 'tags/ohok', 'tags/town'])``



askbot.post.flag_offensive.delete
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Sent when a user *un*flags an `Ask Fedora
<https://ask.fedoraproject.org/questions>`_ question or answer
as "offensive".

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'instance': { 'comment_count': 0,
                             'pk': 3,
                             'post_type': 'answer',
                             'summary': 'I think I know... totally.    asldkj for sure.\n ...',
                             'text': 'I think I know... totally.    asldkj for sure.',
                             'vote_down_count': 0,
                             'vote_up_count': 1},
               'thread': { 'pk': 2,
                           'tagnames': ['town', 'ohok'],
                           'title': 'alskdjflaksjdf lakjsf a'},
               'topmost_post_id': 2},
      'timestamp': 1359947128.523792,
      'topic': 'org.fedoraproject.prod.askbot.post.flag_offensive.delete',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - askbot.post.flag_offensive.delete

- :func:`fedmsg.meta.msg2subtitle`

  - ralph unflagged an answer as offensive...

- :func:`fedmsg.meta.msg2link`

  - https://ask.fedoraproject.org/question/2/

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/ask_fedora.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['threads/2', 'tags/ohok', 'tags/town'])``



askbot.tag.update
~~~~~~~~~~~~~~~~~

Messages get emitted on this topic when a question on `Ask Fedora
<https://ask.fedoraproject.org/questions>`_ changes tags.
It includes information about what tags the package now has, what question
the tags are for, and who did the changing.  The ``msg['msg']['tags']``
field describes which tags changed while the
``msg['msg']['thread']['tagnames']`` field describes all tags on the
thread in question.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'tags': ['asldkjfalskdjfalskj', 'asldkjf', 'asldkjfalskdjf'],
               'thread': { 'pk': 2,
                           'tagnames': [ 'town',
                                         'ohok',
                                         'asldkjfalskdjfalskj',
                                         'asldkjf'],
                           'title': 'some title'},
               'timestamp': 1359945296.0,
               'topmost_post_id': 2},
      'timestamp': 1359945296.629136,
      'topic': 'org.fedoraproject.prod.askbot.tag.update',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - askbot.tag.update

- :func:`fedmsg.meta.msg2subtitle`

  - ralph altered tags on askbot question 'some title'

- :func:`fedmsg.meta.msg2link`

  - https://ask.fedoraproject.org/question/2/

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/ask_fedora.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['tags/asldkjfalskdjfalskj', 'tags/asldkjfalskdjf', 'tags/asldkjf', 'threads/2'])``



bodhi
-----

bodhi.buildroot_override.tag
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `Bodhi Updates System <https://admin.fedoraproject.org/updates>`_
publishes messages on this topic whenever a user **requests a buildroot
override** for an update.

.. code-block:: python

    { 'i': 1,
      'msg': { 'override': { 'build': 'fedmsg-1.0-1', 'submitter': 'lmacken'}},
      'timestamp': 1344344053.23372,
      'topic': 'org.fedoraproject.prod.bodhi.buildroot_override.tag'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - bodhi.buildroot_override.tag

- :func:`fedmsg.meta.msg2subtitle`

  - lmacken submitted a buildroot override for fedmsg-1.0-1

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/updates/static/images/bodhi-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/0c35a75019e58e54fb58202db20d2c24?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['lmacken'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['fedmsg'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['packages/fedmsg'])``



bodhi.buildroot_override.untag
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `Bodhi Updates System <https://admin.fedoraproject.org/updates>`_
publishes messages on this topic whenever a user explicitly removes a
previously requested buildroot override.

.. code-block:: python

    { 'i': 1,
      'msg': { 'override': { 'build': 'fedmsg-1.0-1', 'submitter': 'lmacken'}},
      'timestamp': 1344964395.207541,
      'topic': 'org.fedoraproject.prod.bodhi.buildroot_override.untag'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - bodhi.buildroot_override.untag

- :func:`fedmsg.meta.msg2subtitle`

  - lmacken expired a buildroot override for fedmsg-1.0-1

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/updates/static/images/bodhi-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/0c35a75019e58e54fb58202db20d2c24?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['lmacken'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['fedmsg'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['packages/fedmsg'])``



bodhi.mashtask.complete
~~~~~~~~~~~~~~~~~~~~~~~

The `Bodhi Masher <https://admin.fedoraproject.org/updates>`_
publishes messages on this topic whenever it **finishes** its work.

Note that, these messages are broken (serverside) due to `this
issue <https://github.com/fedora-infra/fedmsg/issues/115>`_.

.. code-block:: python

    { 'msg': { 'success': False},
      'topic': 'org.fedoraproject.prod.bodhi.mashtask.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - bodhi.mashtask.complete

- :func:`fedmsg.meta.msg2subtitle`

  - bodhi masher failed to complete its mashtask!

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/updates/static/images/bodhi-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - 

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``None``



bodhi.mashtask.mashing
~~~~~~~~~~~~~~~~~~~~~~

The `Bodhi Masher <https://admin.fedoraproject.org/updates>`_
publishes messages on this topic whenever it starts mashing
a particular repository.

Note that, these messages are broken (serverside) due to `this
issue <https://github.com/fedora-infra/fedmsg/issues/115>`_.

.. code-block:: python

    { 'msg': { 'repo': 'test_repo'},
      'topic': 'org.fedoraproject.prod.bodhi.mashtask.mashing'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - bodhi.mashtask.mashing

- :func:`fedmsg.meta.msg2subtitle`

  - bodhi masher is mashing test_repo

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/updates/static/images/bodhi-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - 

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['repos/test_repo'])``



bodhi.mashtask.start
~~~~~~~~~~~~~~~~~~~~

The `Bodhi Masher <https://admin.fedoraproject.org/updates>`_
publishes messages on this topic whenever it **begins** its work.

Note that, these messages are broken (serverside) due to `this
issue <https://github.com/fedora-infra/fedmsg/issues/115>`_.

.. code-block:: python

    { 'msg': { }, 'topic': 'org.fedoraproject.prod.bodhi.mashtask.start'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - bodhi.mashtask.start

- :func:`fedmsg.meta.msg2subtitle`

  - bodhi masher started its mashtask

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/updates/static/images/bodhi-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - 

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``None``



bodhi.mashtask.sync.done
~~~~~~~~~~~~~~~~~~~~~~~~

The `Bodhi Masher <https://admin.fedoraproject.org/updates>`_
publishes messages on this topic when it finishes syncing.

Note that, these messages are broken (serverside) due to `this
issue <https://github.com/fedora-infra/fedmsg/issues/115>`_.

.. code-block:: python

    { 'msg': { }, 'topic': 'org.fedoraproject.prod.bodhi.mashtask.sync.done'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - bodhi.mashtask.sync.done

- :func:`fedmsg.meta.msg2subtitle`

  - bodhi masher finished waiting on mirror repos to sync

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/updates/static/images/bodhi-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - 

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``None``



bodhi.mashtask.sync.wait
~~~~~~~~~~~~~~~~~~~~~~~~

The `Bodhi Masher <https://admin.fedoraproject.org/updates>`_
publishes messages on this topic when it begins **waiting to sync**.

Note that, these messages are broken (serverside) due to `this
issue <https://github.com/fedora-infra/fedmsg/issues/115>`_.

.. code-block:: python

    { 'msg': { }, 'topic': 'org.fedoraproject.prod.bodhi.mashtask.sync.wait'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - bodhi.mashtask.sync.wait

- :func:`fedmsg.meta.msg2subtitle`

  - bodhi masher is waiting on mirror repos to sync

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/updates/static/images/bodhi-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - 

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``None``



bodhi.update.comment
~~~~~~~~~~~~~~~~~~~~

The `Bodhi Updates System <https://admin.fedoraproject.org/updates>`_
publishes messages on this topic whenever a user **comments** on a bodhi
update.

.. code-block:: python

    { 'i': 1,
      'msg': { 'comment': { 'anonymous': False,
                            'author': 'ralph',
                            'group': None,
                            'karma': -1,
                            'text': "Can you believe how much testing we're doing?",
                            'timestamp': 1344344050.0,
                            'update_title': 'fedmsg-1.0-1'}},
      'timestamp': 1344344053.23372,
      'topic': 'org.fedoraproject.prod.bodhi.update.comment'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - bodhi.update.comment

- :func:`fedmsg.meta.msg2subtitle`

  - ralph commented on bodhi update fedmsg-1.0-1 (karma: -1)

- :func:`fedmsg.meta.msg2link`

  - https://admin.fedoraproject.org/updates/fedmsg-1.0-1

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/updates/static/images/bodhi-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['fedmsg'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['packages/fedmsg'])``



bodhi.update.complete.testing
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `Bodhi Updates System <https://admin.fedoraproject.org/updates>`_
publishes messages on this topic whenever an update
**completes it's push to the testing repository**.  Here's a
straightforward example:

.. code-block:: python

    { 'i': 88,
      'msg': { 'update': { 'approved': None,
                           'bugs': [],
                           'builds': [ { 'nvr': 'fedmsg-0.2.7-2.el6',
                                         'package': { 'committers': ['ralph'],
                                                      'name': 'fedmsg',
                                                      'suggest_reboot': False}}],
                           'close_bugs': True,
                           'comments': [ { 'anonymous': False,
                                           'author': 'bodhi',
                                           'group': None,
                                           'karma': 0,
                                           'text': 'This update has been submitted for testing by ralph. ',
                                           'timestamp': 1344266157.0},
                                         { 'anonymous': False,
                                           'author': 'bodhi',
                                           'group': None,
                                           'karma': 0,
                                           'text': 'This update is currently being pushed to the Fedora EPEL 6 testing updates repository.',
                                           'timestamp': 1344443927.0}],
                           'critpath': False,
                           'critpath_approved': False,
                           'date_modified': None,
                           'date_pushed': 1344447839.0,
                           'date_submitted': 1344266152.0,
                           'karma': 0,
                           'nagged': None,
                           'notes': 'Bugfix - Added a forgotten new requirement on python-requests.',
                           'release': { 'dist_tag': 'dist-6E-epel',
                                        'id_prefix': 'FEDORA-EPEL',
                                        'locked': False,
                                        'long_name': 'Fedora EPEL 6',
                                        'name': 'EL-6'},
                           'request': None,
                           'stable_karma': 3,
                           'status': 'testing',
                           'submitter': 'ralph',
                           'title': 'fedmsg-0.2.7-2.el6',
                           'type': 'bugfix',
                           'unstable_karma': -3,
                           'updateid': 'FEDORA-EPEL-2012-6650'}},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.bodhi.update.complete.testing'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - bodhi.update.complete.testing

- :func:`fedmsg.meta.msg2subtitle`

  - ralph's fedmsg-0.2.7-2.el6 bodhi update completed push to testing

- :func:`fedmsg.meta.msg2link`

  - https://admin.fedoraproject.org/updates/fedmsg-0.2.7-2.el6

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/updates/static/images/bodhi-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['fedmsg'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['packages/fedmsg'])``



bodhi.update.request.obsolete
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `Bodhi Updates System <https://admin.fedoraproject.org/updates>`_
publishes messages on this topic whenever a *user* requests that an update
be **obsoleted**.

.. code-block:: python

    { 'msg': { 'agent': 'lmacken',
               'update': { 'submitter': 'lmacken', 'title': 'foo'}},
      'topic': 'org.fedoraproject.prod.bodhi.update.request.obsolete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - bodhi.update.request.obsolete

- :func:`fedmsg.meta.msg2subtitle`

  - lmacken obsoleted foo

- :func:`fedmsg.meta.msg2link`

  - https://admin.fedoraproject.org/updates/foo

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/updates/static/images/bodhi-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/0c35a75019e58e54fb58202db20d2c24?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['lmacken'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['foo'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['packages/foo'])``



bodhi.update.request.revoke
~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `Bodhi Updates System <https://admin.fedoraproject.org/updates>`_
publishes messages on this topic whenever a *user* revokes a prior
request on an update.

.. code-block:: python

    { 'msg': { 'agent': 'lmacken',
               'update': { 'submitter': 'lmacken', 'title': 'foo'}},
      'topic': 'org.fedoraproject.prod.bodhi.update.request.revoke'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - bodhi.update.request.revoke

- :func:`fedmsg.meta.msg2subtitle`

  - lmacken revoked foo

- :func:`fedmsg.meta.msg2link`

  - https://admin.fedoraproject.org/updates/foo

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/updates/static/images/bodhi-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/0c35a75019e58e54fb58202db20d2c24?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['lmacken'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['foo'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['packages/foo'])``



bodhi.update.request.stable
~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `Bodhi Updates System <https://admin.fedoraproject.org/updates>`_
publishes messages on this topic whenever a *user* requests that an update
be marked as **stable**.

.. code-block:: python

    { 'msg': { 'agent': 'lmacken',
               'update': { 'submitter': 'lmacken', 'title': 'foo'}},
      'topic': 'org.fedoraproject.prod.bodhi.update.request.stable'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - bodhi.update.request.stable

- :func:`fedmsg.meta.msg2subtitle`

  - lmacken submitted foo to stable

- :func:`fedmsg.meta.msg2link`

  - https://admin.fedoraproject.org/updates/foo

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/updates/static/images/bodhi-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/0c35a75019e58e54fb58202db20d2c24?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['lmacken'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['foo'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['packages/foo'])``



bodhi.update.request.testing
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `Bodhi Updates System <https://admin.fedoraproject.org/updates>`_
publishes messages on this topic whenever a *user* requests that an update
be pushed to the testing repository. Some updates may contain *multiple
packages*, which can be a little tricky if you're not ready for it.  Here's
an example of that:

.. code-block:: python

    { 'i': 2,
      'msg': { 'agent': 'lmacken',
               'update': { 'approved': None,
                           'bugs': [],
                           'builds': [ { 'nvr': 'gnome-settings-daemon-3.6.1-1.fc18',
                                         'package': { 'committers': [ 'hadess',
                                                                      'ofourdan',
                                                                      'mkasik',
                                                                      'cosimoc'],
                                                      'name': 'gnome-settings-daemon',
                                                      'suggest_reboot': False}},
                                       { 'nvr': 'control-center-3.6.1-1.fc18',
                                         'package': { 'committers': [ 'ctrl-center-team',
                                                                      'ofourdan',
                                                                      'ssp',
                                                                      'ajax',
                                                                      'alexl',
                                                                      'jrb',
                                                                      'mbarnes',
                                                                      'caolanm',
                                                                      'davidz',
                                                                      'mclasen',
                                                                      'rhughes',
                                                                      'hadess',
                                                                      'johnp',
                                                                      'caillon',
                                                                      'whot',
                                                                      'rstrode'],
                                                      'name': 'control-center',
                                                      'suggest_reboot': False}}],
                           'close_bugs': True,
                           'comments': [ { 'anonymous': False,
                                           'author': 'bodhi',
                                           'group': None,
                                           'karma': 0,
                                           'text': 'This update has been submitted for testing by hadess. ',
                                           'timestamp': 1349718539.0,
                                           'update_title': 'gnome-settings-daemon-3.6.1-1.fc18,control-center-3.6.1-1.fc18'}],
                           'critpath': False,
                           'critpath_approved': False,
                           'date_modified': None,
                           'date_pushed': None,
                           'date_submitted': 1349718534.0,
                           'karma': 0,
                           'nagged': None,
                           'notes': "This update fixes numerous bugs in the new Input Sources support, the Network panel and adds a help screen accessible via Wacom tablets's buttons.",
                           'release': { 'dist_tag': 'f18',
                                        'id_prefix': 'FEDORA',
                                        'locked': True,
                                        'long_name': 'Fedora 18',
                                        'name': 'F18'},
                           'request': 'testing',
                           'stable_karma': 3,
                           'status': 'pending',
                           'submitter': 'hadess',
                           'title': 'gnome-settings-daemon-3.6.1-1.fc18,control-center-3.6.1-1.fc18',
                           'type': 'bugfix',
                           'unstable_karma': -3,
                           'updateid': None}},
      'timestamp': 1349718539.0,
      'topic': 'org.fedoraproject.prod.bodhi.update.request.testing'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - bodhi.update.request.testing

- :func:`fedmsg.meta.msg2subtitle`

  - lmacken submitted gnome-settings-daemon-3.6.1-1.fc18,control-center-3.6.1-1.fc18 to testing

- :func:`fedmsg.meta.msg2link`

  - https://admin.fedoraproject.org/updates/gnome-settings-daemon-3.6.1-1.fc18,control-center-3.6.1-1.fc18

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/updates/static/images/bodhi-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/9d953fa825bd80dfa6e45660b03adc2d?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['hadess'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['gnome-settings-daemon', 'control-center'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['packages/gnome-settings-daemon', 'packages/control-center'])``



bodhi.update.request.testing
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `Bodhi Updates System <https://admin.fedoraproject.org/updates>`_
publishes messages on this topic whenever a *user* requests that an
update be pushed to the testing repository.

.. code-block:: python

    { 'msg': { 'agent': 'lmacken',
               'update': { 'submitter': 'lmacken', 'title': 'foo'}},
      'topic': 'org.fedoraproject.prod.bodhi.update.request.testing'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - bodhi.update.request.testing

- :func:`fedmsg.meta.msg2subtitle`

  - lmacken submitted foo to testing

- :func:`fedmsg.meta.msg2link`

  - https://admin.fedoraproject.org/updates/foo

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/updates/static/images/bodhi-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/0c35a75019e58e54fb58202db20d2c24?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['lmacken'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['foo'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['packages/foo'])``



bodhi.update.request.unpush
~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `Bodhi Updates System <https://admin.fedoraproject.org/updates>`_
publishes messages on this topic whenever a *user* requests that an update
be **unpushed**.

.. code-block:: python

    { 'msg': { 'agent': 'lmacken',
               'update': { 'submitter': 'lmacken', 'title': 'foo'}},
      'topic': 'org.fedoraproject.prod.bodhi.update.request.unpush'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - bodhi.update.request.unpush

- :func:`fedmsg.meta.msg2subtitle`

  - lmacken unpushed foo

- :func:`fedmsg.meta.msg2link`

  - https://admin.fedoraproject.org/updates/foo

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/updates/static/images/bodhi-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/0c35a75019e58e54fb58202db20d2c24?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['lmacken'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['foo'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['packages/foo'])``



buildsys
--------

buildsys.build.state.change
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Koji emits messages on this topic anytime the state of a build changes.

The state codes can be pretty cryptic (they are just integers and are the
enums used by koji internally):

- 0 - Started
- 1 - Completed
- 2 - Deleted
- 3 - Failed
- 4 - Cancelled

The example here is one of a build **failing** on one of the **secondary
arch** koji instances.

.. code-block:: python

    { 'i': 1,
      'msg': { 'attribute': 'state',
               'build_id': 12345,
               'instance': 'ppc',
               'name': 'eclipse-ptp',
               'new': 3,
               'old': 0,
               'owner': 'rmattes',
               'release': '1.fc19',
               'version': '6.0.3'},
      'timestamp': 1359604772.178867,
      'topic': 'org.fedoraproject.prod.buildsys.build.state.change',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - buildsys.build.state.change

- :func:`fedmsg.meta.msg2subtitle`

  - rmattes's eclipse-ptp-6.0.3-1.fc19 failed to build (ppc)

- :func:`fedmsg.meta.msg2link`

  - http://ppc.koji.fedoraproject.org/koji/buildinfo?buildID=12345

- :func:`fedmsg.meta.msg2icon`

  - http://fedoraproject.org/w/uploads/2/20/Artwork_DesignService_koji-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/9daff58407cf59893344b3305c6f838c?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['rmattes'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['eclipse-ptp'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['ppc/builds/eclipse-ptp/6.0.3/1.fc19'])``



buildsys.build.state.change
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Koji emits messages on this topic anytime the state of a build changes.

The state codes can be pretty cryptic (they are just integers and are the
enums used by koji internally):

- 0 - Started
- 1 - Completed
- 2 - Deleted
- 3 - Failed
- 4 - Cancelled

The example here is one of a new build **starting**.

.. code-block:: python

    { 'i': 1,
      'msg': { 'attribute': 'state',
               'build_id': 12345,
               'instance': 'primary',
               'name': 'eclipse-ptp',
               'new': 0,
               'old': 3,
               'owner': 'ralph',
               'release': '1.fc19',
               'version': '6.0.3'},
      'timestamp': 1359604772.178867,
      'topic': 'org.fedoraproject.prod.buildsys.build.state.change',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - buildsys.build.state.change

- :func:`fedmsg.meta.msg2subtitle`

  - ralph's eclipse-ptp-6.0.3-1.fc19 started building

- :func:`fedmsg.meta.msg2link`

  - http://koji.fedoraproject.org/koji/buildinfo?buildID=12345

- :func:`fedmsg.meta.msg2icon`

  - http://fedoraproject.org/w/uploads/2/20/Artwork_DesignService_koji-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['eclipse-ptp'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['primary/builds/eclipse-ptp/6.0.3/1.fc19'])``



buildsys.build.state.change
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Koji emits messages on this topic anytime the state of a build changes.

The state codes can be tricky, but are described in other examples.

*This* example message shows one where for some reason or another, koji
was unable to publish the name of the owner of a build.  The 'owner' field
is set to None.

.. code-block:: python

    { 'i': 1,
      'msg': { 'attribute': 'state',
               'build_id': 12345,
               'instance': 'primary',
               'name': 'eclipse-ptp',
               'new': 0,
               'old': 3,
               'owner': None,
               'release': '1.fc19',
               'version': '6.0.3'},
      'timestamp': 1359604772.178867,
      'topic': 'org.fedoraproject.prod.buildsys.build.state.change',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - buildsys.build.state.change

- :func:`fedmsg.meta.msg2subtitle`

  - eclipse-ptp-6.0.3-1.fc19 started building

- :func:`fedmsg.meta.msg2link`

  - http://koji.fedoraproject.org/koji/buildinfo?buildID=12345

- :func:`fedmsg.meta.msg2icon`

  - http://fedoraproject.org/w/uploads/2/20/Artwork_DesignService_koji-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://fedoraproject.org/w/uploads/2/20/Artwork_DesignService_koji-icon-48.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set([])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['eclipse-ptp'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['primary/builds/eclipse-ptp/6.0.3/1.fc19'])``



buildsys.package.list.change
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Koji emits these messages a package listing changes.

.. code-block:: python

    { 'i': 2,
      'msg': { 'package': 'almanah', 'tag': 'f17'},
      'timestamp': 1361903735.0,
      'topic': 'org.fedoraproject.prod.buildsys.package.list.change'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - buildsys.package.list.change

- :func:`fedmsg.meta.msg2subtitle`

  - Package list change for almanah:  'f17'

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - http://fedoraproject.org/w/uploads/2/20/Artwork_DesignService_koji-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set([])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['almanah'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['primary/tags/f17'])``



buildsys.repo.done
~~~~~~~~~~~~~~~~~~

Koji emits these messages when repo initialization finishes.

.. code-block:: python

    { 'i': 2,
      'msg': { 'repo_id': 23456, 'tag': 'f19-build', 'tag_id': 12345},
      'timestamp': 1359655886.353586,
      'topic': 'org.fedoraproject.prod.buildsys.repo.done',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - buildsys.repo.done

- :func:`fedmsg.meta.msg2subtitle`

  - Repo done:  f19-build

- :func:`fedmsg.meta.msg2link`

  - http://koji.fedoraproject.org/koji/taginfo?tagID=12345

- :func:`fedmsg.meta.msg2icon`

  - http://fedoraproject.org/w/uploads/2/20/Artwork_DesignService_koji-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set([])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['primary/repos/f19-build'])``



buildsys.repo.init
~~~~~~~~~~~~~~~~~~

Koji emits these messages when a repository begins initializing.

.. code-block:: python

    { 'i': 2,
      'msg': { 'repo_id': 23456, 'tag': 'f19-build', 'tag_id': 12345},
      'timestamp': 1359655886.353586,
      'topic': 'org.fedoraproject.prod.buildsys.repo.init',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - buildsys.repo.init

- :func:`fedmsg.meta.msg2subtitle`

  - Repo initialized:  f19-build

- :func:`fedmsg.meta.msg2link`

  - http://koji.fedoraproject.org/koji/taginfo?tagID=12345

- :func:`fedmsg.meta.msg2icon`

  - http://fedoraproject.org/w/uploads/2/20/Artwork_DesignService_koji-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set([])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['primary/repos/f19-build'])``



buildsys.tag
~~~~~~~~~~~~

Koji emits these messages when a build has a certain tag added to it.

.. code-block:: python

    { 'i': 1,
      'msg': { 'name': 'stage',
               'owner': 'ralph',
               'release': '3.fc18',
               'tag': 'f18-updates-testing-pending',
               'tag_id': 216,
               'user': 'bodhi',
               'version': '4.1.1'},
      'timestamp': 1359603469.21164,
      'topic': 'org.fedoraproject.prod.buildsys.tag',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - buildsys.tag

- :func:`fedmsg.meta.msg2subtitle`

  - ralph's stage-4.1.1-3.fc18 tagged into f18-updates-testing-pending by bodhi

- :func:`fedmsg.meta.msg2link`

  - http://koji.fedoraproject.org/koji/taginfo?tagID=216

- :func:`fedmsg.meta.msg2icon`

  - http://fedoraproject.org/w/uploads/2/20/Artwork_DesignService_koji-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['bodhi', 'ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['stage'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['primary/tags/f18-updates-testing-pending', 'primary/builds/stage/4.1.1/3.fc18'])``



buildsys.task.state.change
~~~~~~~~~~~~~~~~~~~~~~~~~~

Koji emits messages on this topic anytime the state of a **scratch**
build changes.

For reasons internal to koji itself, the state codes for **scratch** builds
are not as cryptic as the ones for regular builds.

Here's an example message of a **scratch build failing**.

.. code-block:: python

    { 'i': 1,
      'msg': { 'attribute': 'state',
               'id': 6380373,
               'method': 'build',
               'new': 'FAILED',
               'old': 'OPEN',
               'owner': 'ralph',
               'srpm': 'python-websocket-client-0.12.0-1.fc20.src.rpm'},
      'msg_id': '2014-991dbbad-b5f5-4f62-b889-d3b637d0cb49',
      'timestamp': 1389298512,
      'topic': 'org.fedoraproject.prod.buildsys.task.state.change',
      'username': 'root'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - buildsys.task.state.change

- :func:`fedmsg.meta.msg2subtitle`

  - ralph's scratch build of python-websocket-client-0.12.0-1.fc20.src.rpm failed

- :func:`fedmsg.meta.msg2link`

  - http://koji.fedoraproject.org/koji/taskinfo?taskID=6380373

- :func:`fedmsg.meta.msg2icon`

  - http://fedoraproject.org/w/uploads/2/20/Artwork_DesignService_koji-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['primary/scratch_builds/python-websocket-client-0.12.0-1.fc20.src.rpm'])``



buildsys.task.state.change
~~~~~~~~~~~~~~~~~~~~~~~~~~

Koji emits messages on this topic anytime the state of a **scratch**
build changes.

For reasons internal to koji itself, the state codes for **scratch** builds
are not as cryptic as the ones for regular builds.

Here's an example message of a new **scratch build starting**.

.. code-block:: python

    { u'i': 1,
      u'msg': { u'attribute': u'state',
                u'id': 6380373,
                u'method': u'build',
                u'new': u'OPEN',
                u'old': u'FREE',
                u'owner': u'ralph',
                u'srpm': 'python-websocket-client-0.12.0-1.fc20.src.rpm'},
      u'msg_id': u'2014-10b5b1b6-42c7-4d64-aeae-5029b9515d47',
      u'timestamp': 1389298195,
      u'topic': u'org.fedoraproject.prod.buildsys.task.state.change',
      u'username': u'root'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - buildsys.task.state.change

- :func:`fedmsg.meta.msg2subtitle`

  - ralph's scratch build of python-websocket-client-0.12.0-1.fc20.src.rpm started

- :func:`fedmsg.meta.msg2link`

  - http://koji.fedoraproject.org/koji/taskinfo?taskID=6380373

- :func:`fedmsg.meta.msg2icon`

  - http://fedoraproject.org/w/uploads/2/20/Artwork_DesignService_koji-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['primary/scratch_builds/python-websocket-client-0.12.0-1.fc20.src.rpm'])``



buildsys.untag
~~~~~~~~~~~~~~

Koji emits these messages anytime a tag is removed from a build.

.. code-block:: python

    { 'i': 85,
      'msg': { 'name': 'globus-gram-job-manager-sge',
               'owner': 'ralph',
               'release': '2.fc16',
               'tag': 'f16-updates-pending',
               'tag_id': 216,
               'user': 'bodhi',
               'version': '1.5'},
      'timestamp': 1359655345.774982,
      'topic': 'org.fedoraproject.prod.buildsys.untag',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - buildsys.untag

- :func:`fedmsg.meta.msg2subtitle`

  - ralph's globus-gram-job-manager-sge-1.5-2.fc16 untagged from f16-updates-pending by bodhi

- :func:`fedmsg.meta.msg2link`

  - http://koji.fedoraproject.org/koji/taginfo?tagID=216

- :func:`fedmsg.meta.msg2icon`

  - http://fedoraproject.org/w/uploads/2/20/Artwork_DesignService_koji-icon-48.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['bodhi', 'ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['globus-gram-job-manager-sge'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['primary/builds/globus-gram-job-manager-sge/1.5/2.fc16', 'primary/tags/f16-updates-pending'])``



cnucnuweb
---------

cnucnuweb.distro.add
~~~~~~~~~~~~~~~~~~~~

These messages are published when a new Linux distribution is added
to the database of `cnucnuweb
<https://github.com/fedora-infra/cnucnuweb>`_.

.. code-block:: python

    { u'i': 2,
      u'msg': { u'distro': { u'name': u'Fedora'},
                u'message': { u'agent': u'rbean@redhat.com', u'distro': u'Debian'},
                u'project': None},
      'msg_id': '2013-d814724a-8ca3-4e8d-936a-e4195e93336c',
      'timestamp': 1386821177,
      'topic': 'org.fedoraproject.prod.cnucnuweb.distro.add'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - cnucnuweb.distro.add

- :func:`fedmsg.meta.msg2subtitle`

  - ralph added the distro named "Fedora" to cnucnuweb

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/cnucnu/distros

- :func:`fedmsg.meta.msg2icon`

  - http://todo.com/image.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['distros/Fedora'])``



cnucnuweb.distro.edit
~~~~~~~~~~~~~~~~~~~~~

These messages are published when a Linux distribution's entry is
edited in the `cnucnuweb <https://github.com/fedora-infra/cnucnuweb>`_
database.

.. code-block:: python

    { 'i': 3,
      'msg': { 'distro': { 'name': 'Fedora'},
               'message': { 'agent': 'rbean@redhat.com',
                            'new': 'FancyHat',
                            'old': 'Fedora'},
               'project': None},
      'msg_id': '2013-f18cfb35-894d-41e6-9fda-6f7b99e7e003',
      'timestamp': 1386821512,
      'topic': 'org.fedoraproject.prod.cnucnuweb.distro.edit',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - cnucnuweb.distro.edit

- :func:`fedmsg.meta.msg2subtitle`

  - ralph changed a distro name from "Fedora" to "FancyHat"

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/cnucnu/distros

- :func:`fedmsg.meta.msg2icon`

  - http://todo.com/image.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['distros/Fedora', 'distros/FancyHat'])``



cnucnuweb.project.add
~~~~~~~~~~~~~~~~~~~~~

These messages are published when someone adds a new project to
`cnucnuweb's <https://github.com/fedora-infra/cnucnuweb>`_ database.

.. code-block:: python

    { 'i': 4,
      'msg': { 'distro': None,
               'message': { 'agent': 'rbean@redhat.com', 'project': 'ansi2html'},
               'project': { 'created_on': 1386839688.0,
                            'homepage': 'https://github.com/ralphbean/ansi2html',
                            'logs': None,
                            'name': 'ansi2html',
                            'packages': [],
                            'regex': 'DEFAULT:ansi2html',
                            'updated_on': 1386839688.0,
                            'version': None,
                            'version_url': 'PYPI-DEFAULT:ansi2html'}},
      'msg_id': '2013-154429ec-842e-4d7f-acae-8d7434b4cbff',
      'timestamp': 1386821688,
      'topic': 'org.fedoraproject.prod.cnucnuweb.project.add',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - cnucnuweb.project.add

- :func:`fedmsg.meta.msg2subtitle`

  - ralph added the project "ansi2html" to cnucnuweb

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/cnucnu/project/ansi2html/

- :func:`fedmsg.meta.msg2icon`

  - http://todo.com/image.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['projects/ansi2html'])``



cnucnuweb.project.add.tried
~~~~~~~~~~~~~~~~~~~~~~~~~~~

These messages are published when someone *tries* to add a new project
to `cnucnuweb's <https://github.com/fedora-infra/cnucnuweb>`_ database.

.. code-block:: python

    { 'i': 4,
      'msg': { 'distro': None,
               'message': { 'agent': 'rbean@redhat.com', 'project': 'ansi2html'},
               'project': { 'created_on': 1386839688.0,
                            'homepage': 'https://github.com/ralphbean/ansi2html',
                            'logs': None,
                            'name': 'ansi2html',
                            'packages': [],
                            'regex': 'DEFAULT:ansi2html',
                            'updated_on': 1386839688.0,
                            'version': None,
                            'version_url': 'PYPI-DEFAULT:ansi2html'}},
      'msg_id': '2013-154429ec-842e-4d7f-acae-8d7434b4cbff',
      'timestamp': 1386821688,
      'topic': 'org.fedoraproject.prod.cnucnuweb.project.add.tried',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - cnucnuweb.project.add.tried

- :func:`fedmsg.meta.msg2subtitle`

  - ralph tried to add the project "ansi2html" to cnucnuweb

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/cnucnu/project/ansi2html/

- :func:`fedmsg.meta.msg2icon`

  - http://todo.com/image.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['projects/ansi2html'])``



cnucnuweb.project.edit
~~~~~~~~~~~~~~~~~~~~~~

These messages are published when someone edits the details of a
project in `cnucnuweb's <https://github.com/fedora-infra/cnucnuweb>`_
database.

.. code-block:: python

    { 'i': 1,
      'msg': { 'distro': None,
               'message': { 'agent': 'rbean@redhat.com',
                            'fields': ['homepage', 'regex'],
                            'project': 'ansi2html'},
               'project': { 'created_on': 1386839688.0,
                            'homepage': 'https://github.com/ralphbean/ansi2html',
                            'logs': None,
                            'name': 'ansi2html',
                            'packages': [],
                            'regex': 'DEFAULT:ansi2html',
                            'updated_on': 1386840021.0,
                            'version': None,
                            'version_url': 'PYPI-DEFAULT:ansi2html'}},
      'msg_id': '2013-35ba0f89-762e-4ed2-a686-484a6862beb6',
      'timestamp': 1386822064,
      'topic': 'org.fedoraproject.prod.cnucnuweb.project.edit',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - cnucnuweb.project.edit

- :func:`fedmsg.meta.msg2subtitle`

  - ralph edited the following fields of the "ansi2html" project: homepage, regex

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/cnucnu/project/ansi2html/

- :func:`fedmsg.meta.msg2icon`

  - http://todo.com/image.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['projects/ansi2html'])``



cnucnuweb.project.map.new
~~~~~~~~~~~~~~~~~~~~~~~~~

These messages are published when someone maps an upstream project to a
package name in a particular distribution (in the `cnucnuweb
<https://github.com/fedora-infra/cnucnuweb>`_ database...)

.. code-block:: python

    { 'i': 1,
      'msg': { 'distro': { 'name': 'Fedora'},
               'message': { 'agent': 'rbean@redhat.com',
                            'distro': 'Fedora',
                            'new': 'python-ansi2html',
                            'project': 'ansi2html'},
               'project': { 'created_on': 1386838297.0,
                            'homepage': 'ansi2html.com',
                            'logs': None,
                            'name': 'ansi2html',
                            'regex': 'DEFAULT:ansi2html',
                            'updated_on': 1386838297.0,
                            'version': None,
                            'version_url': 'PYPI-DEFAULT:ansi2html'}},
      'msg_id': '2013-7e860d4e-d9eb-41c6-b693-f0786b45db19',
      'timestamp': 1386823075,
      'topic': 'org.fedoraproject.prod.cnucnuweb.project.map.new',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - cnucnuweb.project.map.new

- :func:`fedmsg.meta.msg2subtitle`

  - ralph mapped the name of "ansi2html" in Fedora to "python-ansi2html"

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/cnucnu/project/ansi2html/

- :func:`fedmsg.meta.msg2icon`

  - http://todo.com/image.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['python-ansi2html'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['mappings/Fedora/python-ansi2html', 'distros/Fedora', 'projects/ansi2html'])``



cnucnuweb.project.map.update
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

These messages are published when someone updates the mapping between
an upstream project and a package name in a particular distribution (in the
`cnucnuweb <https://github.com/fedora-infra/cnucnuweb>`_ database...)

.. code-block:: python

    { 'i': 3,
      'msg': { 'distro': { 'name': 'Fedora'},
               'message': { 'agent': 'rbean@redhat.com',
                            'distro': 'Fedora',
                            'new': 'python3-ansi2html',
                            'prev': 'python-ansi2html',
                            'project': 'ansi2html'},
               'project': { 'created_on': 1386842519.0,
                            'homepage': 'https://github.com/ralphbean/ansi2html',
                            'logs': None,
                            'name': 'ansi2html',
                            'regex': 'DEFAULT:ansi2html',
                            'updated_on': 1386842519.0,
                            'version': None,
                            'version_url': 'PYPI-DEFAULT:ansi2html'}},
      'msg_id': '2013-319d6a62-827c-458b-971c-6528f6e71dc3',
      'timestamp': 1386824705,
      'topic': 'org.fedoraproject.prod.cnucnuweb.project.map.update',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - cnucnuweb.project.map.update

- :func:`fedmsg.meta.msg2subtitle`

  - ralph updated the name of "ansi2html" in "Fedora" from "python-ansi2html" to "python3-ansi2html"

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/cnucnu/project/ansi2html/

- :func:`fedmsg.meta.msg2icon`

  - http://todo.com/image.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['python3-ansi2html', 'python-ansi2html'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['mappings/Fedora/python-ansi2html', 'distros/Fedora', 'mappings/Fedora/python3-ansi2html', 'projects/ansi2html'])``



cnucnuweb.project.remove
~~~~~~~~~~~~~~~~~~~~~~~~

These messages are published when someone *removes* a project from
`cnucnuweb's <https://github.com/fedora-infra/cnucnuweb>`_ database.

.. code-block:: python

    { 'i': 2,
      'msg': { 'distro': None,
               'message': { 'agent': 'rbean@redhat.com', 'project': 'ansi2html'},
               'project': { 'created_on': 1386839688.0,
                            'homepage': 'https://github.com/ralphbean/ansi2html',
                            'logs': None,
                            'name': 'ansi2html',
                            'packages': [],
                            'regex': 'DEFAULT:ansi2html',
                            'updated_on': 1386840064.0,
                            'version': None,
                            'version_url': 'PYPI-DEFAULT:ansi2html'}},
      'msg_id': '2013-738f0d92-221e-4894-a3bc-5bf865199529',
      'timestamp': 1386822329,
      'topic': 'org.fedoraproject.prod.cnucnuweb.project.remove',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - cnucnuweb.project.remove

- :func:`fedmsg.meta.msg2subtitle`

  - ralph deleted the "ansi2html" project

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/cnucnu/project/ansi2html/

- :func:`fedmsg.meta.msg2icon`

  - http://todo.com/image.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['projects/ansi2html'])``



cnucnuweb.project.version.update
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The purpose of cnucnuweb is to monitor upstream projects and to
try and detect when they release new tarballs.  *These* messages are the
ones that get published when a tarball is found that is newer than the
one last seen in the `cnucnuweb
<https://github.com/fedora-infra/cnucnuweb>`_ database.

.. code-block:: python

    { 'i': 3,
      'msg': { 'old_version': '0.1.3',
               'project': { 'created_on': 1386842519.0,
                            'homepage': 'https://github.com/ralphbean/ansi2html',
                            'logs': None,
                            'name': 'ansi2html',
                            'regex': 'DEFAULT:ansi2html',
                            'updated_on': 1386842519.0,
                            'version': '0.1.4',
                            'version_url': 'PYPI-DEFAULT:ansi2html'},
               'strange': False,
               'upstream_version': '0.1.4'},
      'msg_id': '2013-319d6a62-827c-458b-971c-6528f6e71dc3',
      'timestamp': 1386824705,
      'topic': 'org.fedoraproject.prod.cnucnuweb.project.version.update',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - cnucnuweb.project.version.update

- :func:`fedmsg.meta.msg2subtitle`

  - A new version of "ansi2html" has been detected:  "0.1.4" in advance of "0.1.3"

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/cnucnu/project/ansi2html/

- :func:`fedmsg.meta.msg2icon`

  - http://todo.com/image.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set([])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['python-ansi2html'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['projects/ansi2html'])``



compose
-------

compose.branched.complete
~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**finished composing**
whatever the current branched distribution version is.  They are published
for both primary and secondary architectures.  The example here is of a
**primary** arch message (the empty string signifies primary).

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': '', 'branch': 'f18', 'log': 'done'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.branched.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.branched.complete

- :func:`fedmsg.meta.msg2subtitle`

  - f18 compose completed

- :func:`fedmsg.meta.msg2link`

  - https://dl.fedoraproject.org/pub/fedora/linux/development/f18

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['branched/primary'])``



compose.branched.complete
~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**finished composing**
whatever the current branched distribution version is.  They are published
for both primary and secondary architectures.  The example here is of a
**secondary** arch message.

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': 'arm', 'branch': 'f18', 'log': 'done'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.branched.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.branched.complete

- :func:`fedmsg.meta.msg2subtitle`

  - f18 compose (arm) completed

- :func:`fedmsg.meta.msg2link`

  - https://dl.fedoraproject.org/pub/fedora-secondary/development/f18

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['branched/arm'])``



compose.branched.mash.complete
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**finished mashing**
whatever the current branched distribution version is.  They are published
for both primary and secondary architectures.  The example here is of a
**primary** arch message (the empty string signifies primary).

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': '', 'branch': 'f18', 'log': 'done'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.branched.mash.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.branched.mash.complete

- :func:`fedmsg.meta.msg2subtitle`

  - f18 compose finished mashing

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['branched/primary'])``



compose.branched.mash.complete
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**finished mashing**
whatever the current branched distribution version is.  They are published
for both primary and secondary architectures.  The example here is of a
**secondary** arch message.

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': 'arm', 'branch': 'f18', 'log': 'done'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.branched.mash.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.branched.mash.complete

- :func:`fedmsg.meta.msg2subtitle`

  - f18 compose (arm) finished mashing

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['branched/arm'])``



compose.branched.mash.start
~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**begun mashing** for
whatever the current branched distribution version is.  They are published
for both primary and secondary architectures.  The example here is of a
**primary** arch message (the empty string signifies primary).

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': '', 'branch': 'f18', 'log': 'start'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.branched.mash.start'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.branched.mash.start

- :func:`fedmsg.meta.msg2subtitle`

  - f18 compose started mashing

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['branched/primary'])``



compose.branched.mash.start
~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**started mashing**
whatever the current branched distribution version is.  They are published
for both primary and secondary architectures.  The example here is of a
**secondary** arch message.

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': 'arm', 'branch': 'f18', 'log': 'start'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.branched.mash.start'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.branched.mash.start

- :func:`fedmsg.meta.msg2subtitle`

  - f18 compose (arm) started mashing

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['branched/arm'])``



compose.branched.pungify.complete
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
completed the `pungify <https://fedorahosted.org/pungi/>`_ process for
whatever the current branched distribution version is.  They are published
for both primary and secondary architectures.  The example here is of a
**primary** arch message (the empty string signifies primary).

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': '', 'branch': 'f18', 'log': 'done'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.branched.pungify.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.branched.pungify.complete

- :func:`fedmsg.meta.msg2subtitle`

  - finished building boot.iso for f18

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['branched/primary'])``



compose.branched.pungify.complete
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
completed the `pungify <https://fedorahosted.org/pungi/>`_ process for
whatever the current branched distribution version is.  They are published
for both primary and secondary architectures.  The example here is of a
**secondary** arch message.

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': 'arm', 'branch': 'f18', 'log': 'done'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.branched.pungify.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.branched.pungify.complete

- :func:`fedmsg.meta.msg2subtitle`

  - finished building boot.iso for f18 (arm)

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['branched/arm'])``



compose.branched.pungify.start
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
started the `pungify <https://fedorahosted.org/pungi/>`_ process for
whatever the current branched distribution version is.  They are published
for both primary and secondary architectures.  The example here is of a
**primary** arch message (the empty string signifies primary).

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': '', 'branch': 'f18', 'log': 'start'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.branched.pungify.start'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.branched.pungify.start

- :func:`fedmsg.meta.msg2subtitle`

  - started building boot.iso for f18

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['branched/primary'])``



compose.branched.pungify.start
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
started the `pungify <https://fedorahosted.org/pungi/>`_ process for
whatever the current branched distribution version is.  They are published
for both primary and secondary architectures.  The example here is of a
**secondary** arch message.

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': 'arm', 'branch': 'f18', 'log': 'start'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.branched.pungify.start'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.branched.pungify.start

- :func:`fedmsg.meta.msg2subtitle`

  - started building boot.iso for f18 (arm)

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['branched/arm'])``



compose.branched.rsync.complete
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
finished **rsyncing**
whatever the current branched distribution version is.  They are published
for both primary and secondary architectures.  The example here is of a
**primary** arch message (the empty string signifies primary).

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': '', 'branch': 'f18', 'log': 'done'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.branched.rsync.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.branched.rsync.complete

- :func:`fedmsg.meta.msg2subtitle`

  - finished rsync of f18 compose

- :func:`fedmsg.meta.msg2link`

  - https://dl.fedoraproject.org/pub/fedora/linux/development/f18

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['branched/primary'])``



compose.branched.rsync.complete
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**finished rsyncing**
whatever the current branched distribution version is.  They are published
for both primary and secondary architectures.  The example here is of a
**secondary** arch message.

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': 'arm', 'branch': 'f18', 'log': 'done'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.branched.rsync.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.branched.rsync.complete

- :func:`fedmsg.meta.msg2subtitle`

  - finished rsync of f18 compose (arm)

- :func:`fedmsg.meta.msg2link`

  - https://dl.fedoraproject.org/pub/fedora-secondary/development/f18

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['branched/arm'])``



compose.branched.rsync.start
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
begun **rsyncing**
whatever the current branched distribution version is.  They are published
for both primary and secondary architectures.  The example here is of a
**primary** arch message (the empty string signifies primary).

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': '', 'branch': 'f18', 'log': 'start'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.branched.rsync.start'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.branched.rsync.start

- :func:`fedmsg.meta.msg2subtitle`

  - started rsyncing f18 compose

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['branched/primary'])``



compose.branched.rsync.start
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**started rsyncing**
whatever the current branched distribution version is.  They are published
for both primary and secondary architectures.  The example here is of a
**secondary** arch message.

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': 'arm', 'branch': 'f18', 'log': 'start'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.branched.rsync.start'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.branched.rsync.start

- :func:`fedmsg.meta.msg2subtitle`

  - started rsyncing f18 compose (arm)

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['branched/arm'])``



compose.branched.start
~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**begun composing**
whatever the current branched distribution version is.  They are published
for both primary and secondary architectures.  The example here is of a
**primary** arch message (the empty string signifies primary).

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': '', 'branch': 'f18', 'log': 'start'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.branched.start'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.branched.start

- :func:`fedmsg.meta.msg2subtitle`

  - f18 compose started

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['branched/primary'])``



compose.branched.start
~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**started composing**
whatever the current branched distribution version is.  They are published
for both primary and secondary architectures.  The example here is of a
**secondary** arch message.

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': 'arm', 'branch': 'f18', 'log': 'start'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.branched.start'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.branched.start

- :func:`fedmsg.meta.msg2subtitle`

  - f18 compose (arm) started

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['branched/arm'])``



compose.epelbeta.complete
~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have **finished composing** the EPEL beta.

.. code-block:: python

    { 'i': 1,
      'msg': { 'log': 'done'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.epelbeta.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.epelbeta.complete

- :func:`fedmsg.meta.msg2subtitle`

  - epelbeta compose completed

- :func:`fedmsg.meta.msg2link`

  - https://dl.fedoraproject.org/pub/epel/beta/7/

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['epelbeta/primary'])``



compose.rawhide.complete
~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**finished** the rawhide compose.  They are published
for both primary and secondary architectures.  The example here is of a
**primary** arch message (the empty string signifies primary).

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': '', 'branch': 'rawhide', 'log': 'done'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.rawhide.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.rawhide.complete

- :func:`fedmsg.meta.msg2subtitle`

  - rawhide compose completed

- :func:`fedmsg.meta.msg2link`

  - https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['rawhide/primary'])``



compose.rawhide.complete
~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**finished** the rawhide compose.  They are published
for both primary and secondary architectures.  The example here is of a
**secondary** arch message.

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': 'arm', 'branch': 'rawhide', 'log': 'done'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.rawhide.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.rawhide.complete

- :func:`fedmsg.meta.msg2subtitle`

  - rawhide compose (arm) completed

- :func:`fedmsg.meta.msg2link`

  - https://dl.fedoraproject.org/pub/fedora-secondary/development/rawhide

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['rawhide/arm'])``



compose.rawhide.mash.complete
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**finished mashing** the rawhide compose.  They are published
for both primary and secondary architectures.  The example here is of a
**primary** arch message (the empty string signifies primary).

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': '', 'branch': 'rawhide', 'log': 'done'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.rawhide.mash.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.rawhide.mash.complete

- :func:`fedmsg.meta.msg2subtitle`

  - rawhide compose finished mashing

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['rawhide/primary'])``



compose.rawhide.mash.complete
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**finished mashing** the rawhide compose.  They are published
for both primary and secondary architectures.  The example here is of a
**secondary** arch message.

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': 'arm', 'branch': 'rawhide', 'log': 'done'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.rawhide.mash.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.rawhide.mash.complete

- :func:`fedmsg.meta.msg2subtitle`

  - rawhide compose (arm) finished mashing

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['rawhide/arm'])``



compose.rawhide.mash.start
~~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**started mashing** the rawhide compose.  They are published
for both primary and secondary architectures.  The example here is of a
**primary** arch message (the empty string signifies primary).

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': '', 'branch': 'rawhide', 'log': 'start'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.rawhide.mash.start'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.rawhide.mash.start

- :func:`fedmsg.meta.msg2subtitle`

  - rawhide compose started mashing

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['rawhide/primary'])``



compose.rawhide.mash.start
~~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**started mashing** the rawhide compose.  They are published
for both primary and secondary architectures.  The example here is of a
**secondary** arch message.

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': 'arm', 'branch': 'rawhide', 'log': 'start'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.rawhide.mash.start'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.rawhide.mash.start

- :func:`fedmsg.meta.msg2subtitle`

  - rawhide compose (arm) started mashing

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['rawhide/arm'])``



compose.rawhide.rsync.complete
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**finished rsyncing** the rawhide compose.  They are published
for both primary and secondary architectures.  The example here is of a
**primary** arch message (the empty string signifies primary).

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': '', 'branch': 'rawhide', 'log': 'done'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.rawhide.rsync.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.rawhide.rsync.complete

- :func:`fedmsg.meta.msg2subtitle`

  - finished rsync of rawhide compose

- :func:`fedmsg.meta.msg2link`

  - https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['rawhide/primary'])``



compose.rawhide.rsync.complete
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**finished rsyncing** the rawhide compose.  They are published
for both primary and secondary architectures.  The example here is of a
**secondary** arch message.

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': 'arm', 'branch': 'rawhide', 'log': 'done'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.rawhide.rsync.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.rawhide.rsync.complete

- :func:`fedmsg.meta.msg2subtitle`

  - finished rsync of rawhide compose (arm)

- :func:`fedmsg.meta.msg2link`

  - https://dl.fedoraproject.org/pub/fedora-secondary/development/rawhide

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['rawhide/arm'])``



compose.rawhide.rsync.start
~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**started rsyncing** the rawhide compose.  They are published
for both primary and secondary architectures.  The example here is of a
**primary** arch message (the empty string signifies primary).

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': '', 'branch': 'rawhide', 'log': 'start'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.rawhide.rsync.start'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.rawhide.rsync.start

- :func:`fedmsg.meta.msg2subtitle`

  - started rsyncing rawhide compose

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['rawhide/primary'])``



compose.rawhide.rsync.start
~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**started rsyncing** the rawhide compose.  They are published
for both primary and secondary architectures.  The example here is of a
**secondary** arch message.

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': 'arm', 'branch': 'rawhide', 'log': 'start'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.rawhide.rsync.start'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.rawhide.rsync.start

- :func:`fedmsg.meta.msg2subtitle`

  - started rsyncing rawhide compose (arm)

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['rawhide/arm'])``



compose.rawhide.start
~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**started** the rawhide compose.  They are published
for both primary and secondary architectures.  The example here is of a
**primary** arch message (the empty string signifies primary).

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': '', 'branch': 'rawhide', 'log': 'start'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.rawhide.start'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.rawhide.start

- :func:`fedmsg.meta.msg2subtitle`

  - rawhide compose started

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['rawhide/primary'])``



compose.rawhide.start
~~~~~~~~~~~~~~~~~~~~~

The `release engineering
<http://fedoraproject.org/wiki/ReleaseEngineering>`_ "compose" scripts
produce these messages when they have
**started** the rawhide compose.  They are published
for both primary and secondary architectures.  The example here is of a
**secondary** arch message.

.. code-block:: python

    { 'i': 1,
      'msg': { 'arch': 'arm', 'branch': 'rawhide', 'log': 'start'},
      'timestamp': 1344447839.891876,
      'topic': 'org.fedoraproject.prod.compose.rawhide.start'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - compose.rawhide.start

- :func:`fedmsg.meta.msg2subtitle`

  - rawhide compose (arm) started

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``None``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['rawhide/arm'])``



copr
----

copr.build.end
~~~~~~~~~~~~~~

`Copr <https://fedorahosted.org/copr/>`_ publishes these messages
when a build has completed.

.. code-block:: python

    { u'i': 4,
      u'msg': { u'build': 100,
                u'copr': u'mutt-kz',
                u'ip': u'172.16.3.3',
                u'pid': 12010,
                u'status': 1,
                u'user': u'fatka',
                u'what': u'build end: user:fatka copr:mutt-kz build:100 ip:172.16.3.3  pid:12010 status:1',
                u'who': u'worker-2'},
      u'msg_id': u'2013-b05a323d-37ee-4396-9635-7b5dfaf5441b',
      u'timestamp': 1383956707.634,
      u'topic': u'org.fedoraproject.prod.copr.build.end',
      u'username': u'copr'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - copr.build.end

- :func:`fedmsg.meta.msg2subtitle`

  - fatka's mutt-kz copr finished a build

- :func:`fedmsg.meta.msg2link`

  - http://copr-fe.cloud.fedoraproject.org/coprs/fatka/mutt-kz/

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/5f0736d6f93d195ac1a4a3c9a90a379d?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['fatka'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['coprs/mutt-kz/build.end'])``



copr.build.start
~~~~~~~~~~~~~~~~

`Copr <https://fedorahosted.org/copr/>`_ publishes these messages
when a new build starts.

.. code-block:: python

    { u'i': 1,
      u'msg': { u'build': 100,
                u'copr': u'mutt-kz',
                u'ip': u'172.16.3.3',
                u'pid': 12010,
                u'user': u'fatka',
                u'what': u'build start: user:fatka copr:mutt-kz build:100 ip:172.16.3.3  pid:12010',
                u'who': u'worker-2'},
      u'msg_id': u'2013-675e7b1e-9b7f-4d11-be2f-2b3845817d60',
      u'timestamp': 1383956077.232,
      u'topic': u'org.fedoraproject.prod.copr.build.start',
      u'username': u'copr'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - copr.build.start

- :func:`fedmsg.meta.msg2subtitle`

  - fatka started a new build of the mutt-kz copr

- :func:`fedmsg.meta.msg2link`

  - http://copr-fe.cloud.fedoraproject.org/coprs/fatka/mutt-kz/

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/5f0736d6f93d195ac1a4a3c9a90a379d?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['fatka'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['coprs/mutt-kz/build.start'])``



copr.chroot.start
~~~~~~~~~~~~~~~~~

`Copr <https://fedorahosted.org/copr/>`_ publishes these messages
when a copr start a new chroot.

.. code-block:: python

    { u'i': 3,
      u'msg': { u'build': 100,
                u'chroot': u'fedora-20-x86_64',
                u'copr': u'mutt-kz',
                u'ip': u'172.16.3.3',
                u'pid': 12010,
                u'user': u'fatka',
                u'what': u'chroot start: chroot:fedora-20-x86_64 user:fatka copr:mutt-kz build:100 ip:172.16.3.3  pid:12010',
                u'who': u'worker-2'},
      u'msg_id': u'2013-833cca09-2dba-42ad-9863-4f6c3c29a30d',
      u'timestamp': 1383956378.468,
      u'topic': u'org.fedoraproject.prod.copr.chroot.start',
      u'username': u'copr'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - copr.chroot.start

- :func:`fedmsg.meta.msg2subtitle`

  - fatka's mutt-kz copr started a new fedora-20-x86_64 chroot

- :func:`fedmsg.meta.msg2link`

  - http://copr-be.cloud.fedoraproject.org/results/fatka/mutt-kz/fedora-20-x86_64/

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/5f0736d6f93d195ac1a4a3c9a90a379d?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['fatka'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['coprs/mutt-kz/chroot.start/fedora-20-x86_64'])``



copr.worker.create
~~~~~~~~~~~~~~~~~~

`Copr <https://fedorahosted.org/copr/>`_ publishes these messages
when a new worker is spun up.

.. code-block:: python

    { u'i': 1,
      u'msg': { u'ip': u'172.16.3.3', u'what': u'creating worker: 172.16.3.3'},
      u'msg_id': u'2013-675e7b1e-9b7f-4d11-be2f-2b3845817d60',
      u'timestamp': 1383956077.232,
      u'topic': u'org.fedoraproject.prod.copr.worker.create',
      u'username': u'copr'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - copr.worker.create

- :func:`fedmsg.meta.msg2subtitle`

  - a new worker was created

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set([])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['coprs/worker.create'])``



datanommer
----------

datanommer.wat
~~~~~~~~~~~~~~

Generally speaking, the `datanommer
<https://github.com/fedora-infra/datanommer>`_ consumer does not publish
its own fedmsg messages.  There is one exception to this rule.

As of fedmsg-0.7.0, every fedmsg carries its own uuid, prefixed with the
year it was published.   There is a very low risk of creating a duplicate
uuid.  To quote wikipedia::

    "The annual risk of someone being hit by a meteorite is estimated to be
    one chance in 17 billion, which means the probability is about
    ``0.00000000006 (6 * 10**-11)``, equivalent to the odds of creating a
    few tens of trillions of UUIDs in a year and having one duplicate"

It is highly unlikely that datanommer will ever try to store a fedmsg
message that carries a uuid that already exists in its database.  In the
event that it does, it will publish the following message; a momentous
occasion.

.. code-block:: python

    { 'i': 1,
      'msg': { 'uuid': '2013-3bf0ec8f-03d3-40be-9ad5-5effdc6e4c06'},
      'timestamp': 1375753735.32427,
      'topic': 'org.fedoraproject.prod.datanommer.wat',
      'username': 'fedmsg'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - datanommer.wat

- :func:`fedmsg.meta.msg2subtitle`

  - datanommer encountered a duplicate uuid

- :func:`fedmsg.meta.msg2link`

  - https://www.destroyallsoftware.com/talks/wat

- :func:`fedmsg.meta.msg2icon`

  - http://i.imgur.com/4g9NZu1.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://i.imgur.com/58oJkOr.gif

- :func:`fedmsg.meta.msg2usernames`

 - ``set([])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['wat'])``



fas
---

fas.group.create
~~~~~~~~~~~~~~~~

The `Fedora Account System <https://admin.fedoraproject.org/accounts>`_
publishes messages on this topic whenever a new group is created.

.. code-block:: python

    { u'msg': { u'agent': { u'username': u'ralph'},
                u'group': { u'name': u'ambassadors'}},
      u'topic': u'org.fedoraproject.prod.fas.group.create'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fas.group.create

- :func:`fedmsg.meta.msg2subtitle`

  - ralph created new FAS group ambassadors

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/accounts/static/theme/fas/images/account.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['groups/ambassadors'])``



fas.group.member.apply
~~~~~~~~~~~~~~~~~~~~~~

The `Fedora Account System <https://admin.fedoraproject.org/accounts>`_
publishes messages on this topic whenever a user **requests to join** a
particular group.

.. code-block:: python

    { u'msg': { u'agent': { u'username': u'ralph'},
                u'group': { u'name': u'ambassadors'},
                u'user': { u'username': u'ralph'}},
      u'topic': u'org.fedoraproject.prod.fas.group.member.apply'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fas.group.member.apply

- :func:`fedmsg.meta.msg2subtitle`

  - ralph applied for ralph's membership in the ambassadors group

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/accounts/static/theme/fas/images/account.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['groups/ambassadors', 'users/ralph'])``



fas.group.member.remove
~~~~~~~~~~~~~~~~~~~~~~~

The `Fedora Account System <https://admin.fedoraproject.org/accounts>`_
publishes messages on this topic whenever a user is **removed** from a
particular group.

.. code-block:: python

    { u'msg': { u'agent': { u'username': u'toshio'},
                u'group': { u'name': u'ambassadors'},
                u'user': { u'username': u'ralph'}},
      u'topic': u'org.fedoraproject.prod.fas.group.member.remove'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fas.group.member.remove

- :func:`fedmsg.meta.msg2subtitle`

  - toshio removed ralph from the ambassadors group

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/accounts/static/theme/fas/images/account.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/8128b4c81d09ada7f95ac9dbf888fbea?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['toshio', 'ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['groups/ambassadors', 'users/ralph'])``



fas.group.member.sponsor
~~~~~~~~~~~~~~~~~~~~~~~~

The `Fedora Account System <https://admin.fedoraproject.org/accounts>`_
publishes messages on this topic whenever a user's request to join a
restricted group is **sponsored** by an authorized user.

.. code-block:: python

    { u'msg': { u'agent': { u'username': u'toshio'},
                u'group': { u'name': u'ambassadors'},
                u'user': { u'username': u'ralph'}},
      u'topic': u'org.fedoraproject.prod.fas.group.member.sponsor'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fas.group.member.sponsor

- :func:`fedmsg.meta.msg2subtitle`

  - toshio sponsored ralph's membership in the ambassadors group

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/accounts/static/theme/fas/images/account.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/8128b4c81d09ada7f95ac9dbf888fbea?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['toshio', 'ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['groups/ambassadors', 'users/ralph'])``



fas.group.update
~~~~~~~~~~~~~~~~

The `Fedora Account System <https://admin.fedoraproject.org/accounts>`_
publishes messages on this topic whenever a group's properties are
modified.  For example:

.. code-block:: python

    { u'msg': { u'agent': u'ralph',
                u'fields': [u'display_name'],
                u'group': u'ambassadors'},
      u'topic': u'org.fedoraproject.prod.fas.group.update'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fas.group.update

- :func:`fedmsg.meta.msg2subtitle`

  - ralph edited the following fields of the ambassadors FAS group:  display_name

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/accounts/static/theme/fas/images/account.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['groups/ambassadors'])``



fas.role.update
~~~~~~~~~~~~~~~

The `Fedora Account System <https://admin.fedoraproject.org/accounts>`_
publishes messages on this topic whenever a user's role in a particular
group changes.

.. code-block:: python

    { u'msg': { u'agent': { u'username': u'toshio'},
                u'group': { u'name': u'ambassadors'},
                u'user': { u'username': u'ralph'}},
      u'topic': u'org.fedoraproject.prod.fas.role.update'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fas.role.update

- :func:`fedmsg.meta.msg2subtitle`

  - toshio changed ralph's role in the ambassadors group

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/accounts/static/theme/fas/images/account.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/8128b4c81d09ada7f95ac9dbf888fbea?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['toshio', 'ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['groups/ambassadors', 'users/ralph'])``



fas.user.create
~~~~~~~~~~~~~~~

The `Fedora Account System <https://admin.fedoraproject.org/accounts>`_
publishes messages on this topic whenever a new user account is created.

.. code-block:: python

    { u'i': 1,
      u'msg': { u'agent': u'ralph', u'user': u'ralph'},
      u'timestamp': 1344432054.809861,
      u'topic': u'org.fedoraproject.prod.fas.user.create'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fas.user.create

- :func:`fedmsg.meta.msg2subtitle`

  - New FAS account:  'ralph'  (created by 'ralph')

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/accounts/static/theme/fas/images/account.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['users/ralph'])``



fas.user.update
~~~~~~~~~~~~~~~

The `Fedora Account System <https://admin.fedoraproject.org/accounts>`_
publishes messages on this topic whenever a user's account is modified.
Information about which account, what fields changed, and who did the
changing are included in the message body.  For example:

.. code-block:: python

    { u'msg': { u'agent': { u'username': u'ralph'},
                u'fields': [u'comments'],
                u'user': { u'username': u'ralph'}},
      u'topic': u'org.fedoraproject.prod.fas.user.update'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fas.user.update

- :func:`fedmsg.meta.msg2subtitle`

  - ralph edited the following fields of ralph's FAS profile:  comments

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://admin.fedoraproject.org/accounts/static/theme/fas/images/account.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['users/ralph'])``



fedbadges
---------

fedbadges.badge.award
~~~~~~~~~~~~~~~~~~~~~

These messages are published when `Open Badges
<https://fedoraproject.org/wiki/Open_Badges>`_ are awarded to Fedora
Contributors by the fedbadges backend.

.. code-block:: python

    { u'i': 1,
      u'msg': { u'badge': { u'creator': u'ralph',
                            u'criteria': { u'datanommer': { u'condition': { u'greater than or equal to': 2},
                                                            u'filter': { u'topics': [ u'{topic}']},
                                                            u'operation': u'count'}},
                            u'description': u'You have commented on 2 or more bodhi updates.',
                            u'discussion': u'http://github.com/fedora-infra/badges/pull/SOME_NUMBER',
                            u'image_url': u'http://example.com/image.png',
                            u'issuer_id': u'fedora-project',
                            u'name': u'Something on your mind',
                            u'trigger': { u'topic': u'org.fedoraproject.stg.bodhi.update.comment'}},
                u'user': { u'badges_user_id': 1, u'username': u'ralph'}},
      u'timestamp': 1371498303.125771,
      u'topic': u'org.fedoraproject.prod.fedbadges.badge.award',
      u'username': u'fedmsg'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fedbadges.badge.award

- :func:`fedmsg.meta.msg2subtitle`

  - ralph has been awarded the "Something on your mind" badge

- :func:`fedmsg.meta.msg2link`

  - https://badges.fedoraproject.org/user/ralph

- :func:`fedmsg.meta.msg2icon`

  - http://example.com/image.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['something-on-your-mind'])``



fedbadges.person.login.first
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

When a user logs in to the `Fedora Badges
<https://badges.fedoraproject.org>`_ site for the very first time, we
publish a message like this one.

.. code-block:: python

    { 'i': 2,
      'msg': { 'user': { 'badges_user_id': 2, 'username': 'ralph'}},
      'msg_id': '2013-be88d409-cdd7-47f0-9edd-87088f8505d2',
      'source_name': 'datanommer',
      'source_version': '0.6.0',
      'timestamp': 1382804277.0,
      'topic': 'org.fedoraproject.prod.fedbadges.person.login.first'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fedbadges.person.login.first

- :func:`fedmsg.meta.msg2subtitle`

  - ralph logged in to badges.fedoraproject.org for the first time

- :func:`fedmsg.meta.msg2link`

  - https://badges.fedoraproject.org/user/ralph

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set([])``



fedbadges.person.rank.advance
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

When a user's rank on the leaderboard of the `Fedora Badges
<https://badges.fedoraproject.org>`_ system increases, this message gets
published.

.. code-block:: python

    { 'i': 4,
      'msg': { 'old_rank': None,
               'person': { 'bio': None,
                           'email': 'ralph@fedoraproject.org',
                           'id': 1600,
                           'nickname': 'ralph',
                           'rank': 1500,
                           'website': None}},
      'timestamp': 1377701575.214381,
      'topic': 'org.fedoraproject.prod.fedbadges.person.rank.advance',
      'username': 'fedmsg'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fedbadges.person.rank.advance

- :func:`fedmsg.meta.msg2subtitle`

  - ralph moved to position 1500 on the badges leaderboard

- :func:`fedmsg.meta.msg2link`

  - https://badges.fedoraproject.org/user/ralph

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/badges.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set([])``



fedocal
-------

fedocal.calendar.clear
~~~~~~~~~~~~~~~~~~~~~~

These messages are published when someone clears a calendar of all
its meeting in `fedocal <https://apps.fedoraproject.org/calendar>`_.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'calendar': { 'calendar_admin_group': 'sysadmin-badges',
                             'calendar_contact': 'ralph@fedoraproject.org',
                             'calendar_description': 'cool deal',
                             'calendar_editor_group': 'sysadmin-main',
                             'calendar_name': 'awesome',
                             'calendar_status': 'Enabled'}},
      'msg_id': '2013-96f9ca0e-c7c6-43f0-9de7-7a268c7f1cef',
      'timestamp': 1379638157.759283,
      'topic': 'org.fedoraproject.prod.fedocal.calendar.clear',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fedocal.calendar.clear

- :func:`fedmsg.meta.msg2subtitle`

  - ralph cleared the "awesome" calendar of all its meetings

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/calendar/awesome/

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/calendar/static/calendar.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['awesome/clear'])``



fedocal.calendar.delete
~~~~~~~~~~~~~~~~~~~~~~~

These messages are published when someone deletes a whole calendar from
`fedocal <https://apps.fedoraproject.org/calendar>`_.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'calendar': { 'calendar_admin_group': 'sysadmin-badges',
                             'calendar_contact': 'ralph@fedoraproject.org',
                             'calendar_description': 'cool deal',
                             'calendar_editor_group': 'sysadmin-main',
                             'calendar_name': 'awesome',
                             'calendar_status': 'Enabled'}},
      'msg_id': '2013-96f9ca0e-c7c6-43f0-9de7-7a268c7f1cef',
      'timestamp': 1379638157.759283,
      'topic': 'org.fedoraproject.prod.fedocal.calendar.delete',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fedocal.calendar.delete

- :func:`fedmsg.meta.msg2subtitle`

  - ralph deleted the "awesome" calendar

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/calendar/awesome/

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/calendar/static/calendar.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['awesome/delete'])``



fedocal.calendar.new
~~~~~~~~~~~~~~~~~~~~

These messages are published when someone creates a whole calendar from
`fedocal <https://apps.fedoraproject.org/calendar>`_.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'calendar': { 'calendar_admin_group': 'sysadmin-badges',
                             'calendar_contact': 'ralph@fedoraproject.org',
                             'calendar_description': 'cool deal',
                             'calendar_editor_group': 'sysadmin-main',
                             'calendar_name': 'awesome',
                             'calendar_status': 'Enabled'}},
      'msg_id': '2013-96f9ca0e-c7c6-43f0-9de7-7a268c7f1cef',
      'timestamp': 1379638157.759283,
      'topic': 'org.fedoraproject.prod.fedocal.calendar.new',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fedocal.calendar.new

- :func:`fedmsg.meta.msg2subtitle`

  - ralph created a whole new "awesome" calendar

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/calendar/awesome/

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/calendar/static/calendar.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['awesome/new'])``



fedocal.calendar.update
~~~~~~~~~~~~~~~~~~~~~~~

These messages are published when someone updates a whole calendar from
`fedocal <https://apps.fedoraproject.org/calendar>`_.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'calendar': { 'calendar_admin_group': 'sysadmin-badges',
                             'calendar_contact': 'ralph@fedoraproject.org',
                             'calendar_description': 'cool deal',
                             'calendar_editor_group': 'sysadmin-main',
                             'calendar_name': 'awesome',
                             'calendar_status': 'Enabled'}},
      'msg_id': '2013-96f9ca0e-c7c6-43f0-9de7-7a268c7f1cef',
      'timestamp': 1379638157.759283,
      'topic': 'org.fedoraproject.prod.fedocal.calendar.update',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fedocal.calendar.update

- :func:`fedmsg.meta.msg2subtitle`

  - ralph updated the "awesome" calendar

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/calendar/awesome/

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/calendar/static/calendar.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['awesome/update'])``



fedocal.calendar.upload
~~~~~~~~~~~~~~~~~~~~~~~

These messages are published when someone uploads an iCalendar file
into a calendar of `fedocal <https://apps.fedoraproject.org/calendar>`_.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'calendar': { 'calendar_admin_group': 'sysadmin-badges',
                             'calendar_contact': 'ralph@fedoraproject.org',
                             'calendar_description': 'cool deal',
                             'calendar_editor_group': 'sysadmin-main',
                             'calendar_name': 'awesome',
                             'calendar_status': 'Enabled'}},
      'msg_id': '2013-96f9ca0e-c7c6-43f0-9de7-7a268c7f1cef',
      'timestamp': 1379638157.759283,
      'topic': 'org.fedoraproject.prod.fedocal.calendar.upload',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fedocal.calendar.upload

- :func:`fedmsg.meta.msg2subtitle`

  - ralph uploaded an iCalendar file into the calendar "awesome"

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/calendar/awesome/

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/calendar/static/calendar.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['awesome/upload'])``



fedocal.meeting.delete
~~~~~~~~~~~~~~~~~~~~~~

These messages are published when someone deletes a meeting from
`fedocal <https://apps.fedoraproject.org/calendar>`_.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'calendar': { 'calendar_admin_group': 'sysadmin-badges',
                             'calendar_contact': 'ralph@fedoraproject.org',
                             'calendar_description': 'cool deal',
                             'calendar_editor_group': 'sysadmin-main',
                             'calendar_name': 'awesome',
                             'calendar_status': 'Enabled'},
               'meeting': { 'calendar_name': 'awesome',
                            'meeting_date': '2013-09-20',
                            'meeting_date_end': '2013-09-21',
                            'meeting_id': 42,
                            'meeting_information': 'awesome',
                            'meeting_manager': 'ralph,',
                            'meeting_name': 'wat',
                            'meeting_region': None,
                            'meeting_time_start': '12:00:00',
                            'meeting_time_stop': '12:00:00',
                            'meeting_timezone': 'UTC'}},
      'msg_id': '2013-8d60e263-5c5f-40bb-86e0-241dc3965ba4',
      'timestamp': 1379638613.767245,
      'topic': 'org.fedoraproject.prod.fedocal.meeting.delete',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fedocal.meeting.delete

- :func:`fedmsg.meta.msg2subtitle`

  - ralph deleted the "wat" meeting from the "awesome" calendar

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/calendar/meeting/42/

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/calendar/static/calendar.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['awesome/meetings/wat/delete'])``



fedocal.meeting.new
~~~~~~~~~~~~~~~~~~~

These messages are published when someone creates a meeting from
`fedocal <https://apps.fedoraproject.org/calendar>`_.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'calendar': { 'calendar_admin_group': 'sysadmin-badges',
                             'calendar_contact': 'ralph@fedoraproject.org',
                             'calendar_description': 'cool deal',
                             'calendar_editor_group': 'sysadmin-main',
                             'calendar_name': 'awesome',
                             'calendar_status': 'Enabled'},
               'meeting': { 'calendar_name': 'awesome',
                            'meeting_date': '2013-09-20',
                            'meeting_date_end': '2013-09-21',
                            'meeting_id': 42,
                            'meeting_information': 'awesome',
                            'meeting_manager': 'ralph,',
                            'meeting_name': 'wat',
                            'meeting_region': None,
                            'meeting_time_start': '12:00:00',
                            'meeting_time_stop': '12:00:00',
                            'meeting_timezone': 'UTC'}},
      'msg_id': '2013-8d60e263-5c5f-40bb-86e0-241dc3965ba4',
      'timestamp': 1379638613.767245,
      'topic': 'org.fedoraproject.prod.fedocal.meeting.new',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fedocal.meeting.new

- :func:`fedmsg.meta.msg2subtitle`

  - ralph created a "wat" meeting in the "awesome" calendar

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/calendar/meeting/42/

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/calendar/static/calendar.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['awesome/meetings/wat/new'])``



fedocal.meeting.reminder
~~~~~~~~~~~~~~~~~~~~~~~~

These messages are published by a cronjob when time gets close to
certain meetings scheduled in the `fedocal
<https://apps.fedoraproject.org/calendar>`_ calendaring system.

.. code-block:: python

    { 'i': 1,
      'msg': { 'calendar': { 'calendar_admin_group': 'sysadmin-badges',
                             'calendar_contact': 'ralph@fedoraproject.org',
                             'calendar_description': 'cool deal',
                             'calendar_editor_group': 'sysadmin-main',
                             'calendar_name': 'awesome',
                             'calendar_status': 'Enabled'},
               'meeting': { 'calendar_name': 'awesome',
                            'meeting_date': '2014-03-06',
                            'meeting_date_end': '2013-09-21',
                            'meeting_id': 42,
                            'meeting_information': 'awesome',
                            'meeting_manager': 'ralph,',
                            'meeting_name': 'wat',
                            'meeting_region': None,
                            'meeting_time_start': '20:34:00',
                            'meeting_time_stop': '12:00:00',
                            'meeting_timezone': 'UTC'}},
      'msg_id': '2013-8d60e263-5c5f-40bb-86e0-241dc3965ba4',
      'timestamp': 1379638613.767245,
      'topic': 'org.fedoraproject.prod.fedocal.meeting.reminder',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fedocal.meeting.reminder

- :func:`fedmsg.meta.msg2subtitle`

  - Friendly reminder!  The "wat" meeting from the "awesome" calendar starts in 59 minutes

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/calendar/meeting/42/

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/calendar/static/calendar.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set([])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['awesome/meetings/wat/reminder'])``



fedocal.meeting.update
~~~~~~~~~~~~~~~~~~~~~~

These messages are published when someone updates a meeting from
`fedocal <https://apps.fedoraproject.org/calendar>`_.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'calendar': { 'calendar_admin_group': 'sysadmin-badges',
                             'calendar_contact': 'ralph@fedoraproject.org',
                             'calendar_description': 'cool deal',
                             'calendar_editor_group': 'sysadmin-main',
                             'calendar_name': 'awesome',
                             'calendar_status': 'Enabled'},
               'meeting': { 'calendar_name': 'awesome',
                            'meeting_date': '2013-09-20',
                            'meeting_date_end': '2013-09-21',
                            'meeting_id': 42,
                            'meeting_information': 'awesome',
                            'meeting_manager': 'ralph,',
                            'meeting_name': 'wat',
                            'meeting_region': None,
                            'meeting_time_start': '12:00:00',
                            'meeting_time_stop': '12:00:00',
                            'meeting_timezone': 'UTC'}},
      'msg_id': '2013-8d60e263-5c5f-40bb-86e0-241dc3965ba4',
      'timestamp': 1379638613.767245,
      'topic': 'org.fedoraproject.prod.fedocal.meeting.update',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fedocal.meeting.update

- :func:`fedmsg.meta.msg2subtitle`

  - ralph updated the "wat" meeting from the "awesome" calendar

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/calendar/meeting/42/

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/calendar/static/calendar.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['awesome/meetings/wat/update'])``



fedoratagger
------------

fedoratagger.rating.update
~~~~~~~~~~~~~~~~~~~~~~~~~~

`Fedora Tagger <https://apps.fedoraproject.org/tagger>`_
doesn't just do tagging of packages, in new versions it also
allows users to rate packages.  It publishes messages like this
one when an anonymous user updates their rating of a package.

.. code-block:: python

    { 'i': 1,
      'msg': { 'rating': { 'package': { 'icon': 'https://apps.fedoraproject.org/packages/images/icons/package_128x128.png',
                                        'name': 'nethack',
                                        'rating': 15.0,
                                        'summary': '',
                                        'tags': [ { 'dislike': 0,
                                                    'like': 1,
                                                    'package': 'nethack',
                                                    'tag': 'awesome',
                                                    'total': 1,
                                                    'votes': 1}]},
                           'rating': 15,
                           'user': { 'anonymous': True,
                                     'rank': -1,
                                     'username': 'anonymous',
                                     'votes': 0}}},
      'timestamp': 1365514895.61764,
      'topic': 'org.fedoraproject.prod.fedoratagger.rating.update',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fedoratagger.rating.update

- :func:`fedmsg.meta.msg2subtitle`

  - An anonymous user gave nethack a rating of 15

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/tagger/nethack

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/tagger.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set([])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['nethack'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['packages/nethack'])``



fedoratagger.tag.create
~~~~~~~~~~~~~~~~~~~~~~~

`Fedora Tagger <https://apps.fedoraproject.org/tagger>`_
publishes messages like this one when a user **creates** a new tag.

.. code-block:: python

    { 'i': 2,
      'msg': { 'tag': { 'dislike': 0,
                        'like': 1,
                        'package': 'mattd',
                        'tag': 'awesome',
                        'total': 1,
                        'votes': 1},
               'user': { 'anonymous': False,
                         'rank': -1,
                         'username': 'ralph',
                         'votes': 4},
               'vote': { 'like': True,
                         'tag': { 'dislike': 0,
                                  'like': 1,
                                  'package': 'mattd',
                                  'tag': 'awesome',
                                  'total': 1,
                                  'votes': 1},
                         'user': { 'anonymous': False,
                                   'rank': -1,
                                   'username': 'ralph',
                                   'votes': 4}}},
      'timestamp': 1365444411.924043,
      'topic': 'org.fedoraproject.prod.fedoratagger.tag.create',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fedoratagger.tag.create

- :func:`fedmsg.meta.msg2subtitle`

  - ralph added tag "awesome" to mattd

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/tagger/mattd

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/tagger.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['mattd'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['labels/awesome', 'packages/mattd'])``



fedoratagger.tag.update
~~~~~~~~~~~~~~~~~~~~~~~

`Fedora Tagger <https://apps.fedoraproject.org/tagger>`_
publishes messages like this one when a user votes on a tag.
Users may upvote or downvote a tag and they may do so either
anonymously or authenticated.  Here's an example of an
authenticated downvote:

.. code-block:: python

    { 'i': 3,
      'msg': { 'tag': { 'dislike': 1,
                        'like': 0,
                        'package': 'mattd',
                        'tag': 'stupid',
                        'total': -1,
                        'votes': 1},
               'user': { 'anonymous': False,
                         'rank': -1,
                         'username': 'ralph',
                         'votes': 4},
               'vote': { 'like': False,
                         'tag': { 'dislike': 1,
                                  'like': 0,
                                  'package': 'mattd',
                                  'tag': 'stupid',
                                  'total': -1,
                                  'votes': 1},
                         'user': { 'anonymous': False,
                                   'rank': -1,
                                   'username': 'ralph',
                                   'votes': 4}}},
      'timestamp': 1365444503.627384,
      'topic': 'org.fedoraproject.prod.fedoratagger.tag.update',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fedoratagger.tag.update

- :func:`fedmsg.meta.msg2subtitle`

  - ralph downvoted "stupid" on mattd

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/tagger/mattd

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/tagger.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['mattd'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['labels/stupid', 'packages/mattd'])``



fedoratagger.usage.toggle
~~~~~~~~~~~~~~~~~~~~~~~~~

`Fedora Tagger <https://apps.fedoraproject.org/tagger>`_
publishes messages like this one when a user **toggles** their usage status
for a package.

Here is an example of ralph declaring that he *no longer* uses *passwd*.

.. code-block:: python

    { 'i': 1,
      'msg': { 'package': { 'icon': 'https://apps.fedoraproject.org/packages/images/icons/package_128x128.png',
                            'name': 'passwd',
                            'rating': -1.0,
                            'summary': 'An utility for setting or changing passwords',
                            'tags': [],
                            'usage': 0},
               'usage': False,
               'user': { 'anonymous': False,
                         'rank': 6,
                         'score': 949,
                         'username': 'ralph',
                         'votes': 859}},
      'msg_id': '2014-8b4ffffc-4854-4da5-92b1-d266b4e7f52f',
      'timestamp': 1391107443,
      'topic': 'org.fedoraproject.prod.fedoratagger.usage.toggle',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fedoratagger.usage.toggle

- :func:`fedmsg.meta.msg2subtitle`

  - ralph declared that they no longer use passwd

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/tagger/passwd

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/tagger.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['passwd'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['packages/passwd'])``



fedoratagger.usage.toggle
~~~~~~~~~~~~~~~~~~~~~~~~~

`Fedora Tagger <https://apps.fedoraproject.org/tagger>`_
publishes messages like this one when a user **toggles** their usage status
for a package.

Here is an example of ralph declaring that he uses *passwd*.

.. code-block:: python

    { 'i': 1,
      'msg': { 'package': { 'icon': 'https://apps.fedoraproject.org/packages/images/icons/package_128x128.png',
                            'name': 'passwd',
                            'rating': -1.0,
                            'summary': 'An utility for setting or changing passwords',
                            'tags': [],
                            'usage': 1},
               'usage': True,
               'user': { 'anonymous': False,
                         'rank': 6,
                         'score': 949,
                         'username': 'ralph',
                         'votes': 859}},
      'msg_id': '2014-8b4ffffc-4854-4da5-92b1-d266b4e7f52f',
      'timestamp': 1391107443,
      'topic': 'org.fedoraproject.prod.fedoratagger.usage.toggle',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - fedoratagger.usage.toggle

- :func:`fedmsg.meta.msg2subtitle`

  - ralph declared that they use passwd

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/tagger/passwd

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/tagger.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['passwd'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['packages/passwd'])``



git
---

git.branch
~~~~~~~~~~

There is a script called ``pkgdb2branch`` that gets run by an SCM
admin as part of the new package process.  Typically, when an `SCM Admin
Request <http://fedoraproject.org/wiki/Package_SCM_admin_requests>`_ is
approved, the scm admin will add the new package or branch to the package
database.  *After that*, the scm admin will run ``pkgdb2branch`` to create
the branch in git on the file system.  Messages of **this** topic are
published `for each new branch` that that process **creates**.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'limburgher', 'branch': 'master', 'name': 'valgrind'},
      'timestamp': 1344350850.886738,
      'topic': 'org.fedoraproject.prod.git.branch'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - git.branch

- :func:`fedmsg.meta.msg2subtitle`

  - limburgher created branch 'master' for the 'valgrind' package

- :func:`fedmsg.meta.msg2link`

  - http://pkgs.fedoraproject.org/cgit/valgrind.git/log/?h=master

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['limburgher'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['valgrind'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['valgrind/__git__'])``



git.lookaside.new
~~~~~~~~~~~~~~~~~

Messages like this one are published when **new sources** are
uploaded to the "lookaside cache".

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'jnovy',
               'filename': 'pst-diffraction.doc.tar.xz',
               'md5sum': 'dacad985394b3977f9dcf0c75f51a357',
               'name': 'texlive'},
      'timestamp': 1349197866.215465,
      'topic': 'org.fedoraproject.prod.git.lookaside.new'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - git.lookaside.new

- :func:`fedmsg.meta.msg2subtitle`

  - jnovy uploaded pst-diffraction.doc.tar.xz for texlive

- :func:`fedmsg.meta.msg2link`

  - http://pkgs.fedoraproject.org/lookaside/pkgs/texlive/pst-diffraction.doc.tar.xz/dacad985394b3977f9dcf0c75f51a357/pst-diffraction.doc.tar.xz

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/git-logo.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/5b938b3dcb12f46b98a1269cab255cbe?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['jnovy'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['texlive'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['texlive/pst-diffraction.doc.tar.xz'])``



git.mass_branch.complete
~~~~~~~~~~~~~~~~~~~~~~~~

There is a script called ``pkgdb2branch`` that gets run by an SCM
admin as part of the new package process.  Messages on this topic are
emitted from that script when it **finishes** a "mass branch".

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'dgilmore'},
      'timestamp': 1344350850.886738,
      'topic': 'org.fedoraproject.prod.git.mass_branch.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - git.mass_branch.complete

- :func:`fedmsg.meta.msg2subtitle`

  - mass branch started by dgilmore completed

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['dgilmore'])``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``None``



git.mass_branch.start
~~~~~~~~~~~~~~~~~~~~~

There is a script called ``pkgdb2branch`` that gets run by an SCM
admin as part of the new package process.  Messages on this topic are
emitted from that script when it is instructed to carry out a "mass
branch" of all packages.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'dgilmore'},
      'timestamp': 1344350850.886738,
      'topic': 'org.fedoraproject.prod.git.mass_branch.start'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - git.mass_branch.start

- :func:`fedmsg.meta.msg2subtitle`

  - dgilmore started a mass branch

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['dgilmore'])``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``None``



git.pkgdb2branch.complete
~~~~~~~~~~~~~~~~~~~~~~~~~

There is a script called ``pkgdb2branch`` that gets run by an SCM
admin as part of the new package process.  Typically, when an `SCM Admin
Request <http://fedoraproject.org/wiki/Package_SCM_admin_requests>`_ is
approved, the scm admin will add the new package or branch to the package
database.  *After that*, the scm admin will run ``pkgdb2branch`` to create
the branch in git on the file system.  Messages of **this** topic are
published when that process **completes**.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'limburgher',
               'branchedPackages': ['nethack'],
               'unbranchedPackages': []},
      'timestamp': 1344350850.886738,
      'topic': 'org.fedoraproject.prod.git.pkgdb2branch.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - git.pkgdb2branch.complete

- :func:`fedmsg.meta.msg2subtitle`

  - run of pkgdb2branch started by limburgher completed

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['limburgher'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['nethack'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['nethack/__git__'])``



git.pkgdb2branch.complete
~~~~~~~~~~~~~~~~~~~~~~~~~

There is a script called ``pkgdb2branch`` that gets run by an SCM
admin as part of the new package process.  Typically, when an `SCM Admin
Request <http://fedoraproject.org/wiki/Package_SCM_admin_requests>`_ is
approved, the scm admin will add the new package or branch to the package
database.  *After that*, the scm admin will run ``pkgdb2branch`` to create
the branch in git on the file system.  Messages of **this** topic are
published when that process **completes**.

*Sometimes* that process can produce errors.  Here's an example of a
message from a failed ``pkgdb2branch`` run.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'limburgher',
               'branchedPackages': [],
               'unbranchedPackages': ['foo']},
      'timestamp': 1344350850.886738,
      'topic': 'org.fedoraproject.prod.git.pkgdb2branch.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - git.pkgdb2branch.complete

- :func:`fedmsg.meta.msg2subtitle`

  - run of pkgdb2branch started by limburgher completed with 1 error

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['limburgher'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['foo'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['foo/__git__'])``



git.pkgdb2branch.complete
~~~~~~~~~~~~~~~~~~~~~~~~~

There is a script called ``pkgdb2branch`` that gets run by an SCM
admin as part of the new package process.  Typically, when an `SCM Admin
Request <http://fedoraproject.org/wiki/Package_SCM_admin_requests>`_ is
approved, the scm admin will add the new package or branch to the package
database.  *After that*, the scm admin will run ``pkgdb2branch`` to create
the branch in git on the file system.  Messages of **this** topic are
published when that process **completes**.

*Sometimes* that process can produce errors.  Here's an example of a
message from a failed ``pkgdb2branch`` run (on multiple packages)

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'limburgher',
               'branchedPackages': [],
               'unbranchedPackages': ['foo', 'bar']},
      'timestamp': 1344350850.886738,
      'topic': 'org.fedoraproject.prod.git.pkgdb2branch.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - git.pkgdb2branch.complete

- :func:`fedmsg.meta.msg2subtitle`

  - run of pkgdb2branch started by limburgher completed with 2 errors

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['limburgher'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['foo', 'bar'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['bar/__git__', 'foo/__git__'])``



git.pkgdb2branch.start
~~~~~~~~~~~~~~~~~~~~~~

There is a script called ``pkgdb2branch`` that gets run by an SCM
admin as part of the new package process.  Typically, when an `SCM Admin
Request <http://fedoraproject.org/wiki/Package_SCM_admin_requests>`_ is
approved, the scm admin will add the new package or branch to the package
database.  *After that*, the scm admin will run ``pkgdb2branch`` to create
the branch in git on the file system.  Messages of **this** topic are
published when that process **begins**.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'limburgher'},
      'timestamp': 1344350850.886738,
      'topic': 'org.fedoraproject.prod.git.pkgdb2branch.start'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - git.pkgdb2branch.start

- :func:`fedmsg.meta.msg2subtitle`

  - limburgher started a run of pkgdb2branch

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['limburgher'])``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``None``



git.receive
~~~~~~~~~~~

Sample message from the first generation of git-category messages that
have been modified in datanommer to match the new topics.

.. code-block:: python

    { 'i': 1,
      'msg': { 'commit': { 'branch': 'master',
                           'email': 'rbean@redhat.com',
                           'message': 'Try removing requirement on python-bunch.\n',
                           'name': 'Ralph Bean',
                           'repo': 'datanommer',
                           'rev': '66abdea4014eb2f0745fc38f86e20c7d7009237e',
                           'stats': { 'files': { 'datanommer.spec': { 'deletions': 6,
                                                                      'insertions': 4,
                                                                      'lines': 10}},
                                      'total': { 'deletions': 6,
                                                 'files': 1,
                                                 'insertions': 4,
                                                 'lines': 10}},
                           'summary': 'Try removing requirement on python-bunch.'}},
      'timestamp': 1349735155.0,
      'topic': 'org.fedoraproject.prod.git.receive'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - git.receive

- :func:`fedmsg.meta.msg2subtitle`

  - rbean@redhat.com pushed to datanommer (master).  "Try removing requirement on python-bunch."

- :func:`fedmsg.meta.msg2link`

  - http://pkgs.fedoraproject.org/cgit/datanommer.git/commit/?h=master&id=66abdea4014eb2f0745fc38f86e20c7d7009237e

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/1a0d2acfddb1911ecf55da42cfa34710?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set([])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['datanommer'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['datanommer/datanommer.spec'])``



git.receive
~~~~~~~~~~~

Messages like this one are published when somebody runs "fedpkg push"
on a package.  Sometimes, the git message may be multiple lines long like:

.. code-block:: python

    { 'i': 1,
      'msg': { 'commit': { 'branch': 'master',
                           'email': 'mjw@redhat.com',
                           'message': 'Clear CFLAGS CXXFLAGS LDFLAGS.\n                This is a bit of a hammer.',
                           'name': 'Mark Wielaard',
                           'repo': 'valgrind',
                           'rev': '7a98f80d9b61ce167e4ef8129c81ed9284ecf4e1',
                           'stats': { 'files': { 'valgrind.spec': { 'deletions': 2,
                                                                    'insertions': 1,
                                                                    'lines': 3}},
                                      'total': { 'deletions': 2,
                                                 'files': 1,
                                                 'insertions': 1,
                                                 'lines': 3}},
                           'summary': 'Clear CFLAGS CXXFLAGS LDFLAGS.',
                           'username': 'mjw'}},
      'timestamp': 1344350850.886738,
      'topic': 'org.fedoraproject.prod.git.receive'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - git.receive

- :func:`fedmsg.meta.msg2subtitle`

  - mjw pushed to valgrind (master).  "Clear CFLAGS CXXFLAGS LDFLAGS. (..more)"

- :func:`fedmsg.meta.msg2link`

  - http://pkgs.fedoraproject.org/cgit/valgrind.git/commit/?h=master&id=7a98f80d9b61ce167e4ef8129c81ed9284ecf4e1

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/git-logo.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/923419d315c8f23eface39852bf32a5f?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['mjw'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['valgrind'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['valgrind/valgrind.spec'])``



git.receive
~~~~~~~~~~~

Messages like this one are published when somebody runs "fedpkg push"
on a package.  The whole git message is included for each commit.

.. code-block:: python

    { 'i': 1,
      'msg': { 'commit': { 'branch': 'master',
                           'email': 'spot@fedoraproject.org',
                           'message': 'another missing patch? ridiculous.\n',
                           'name': 'Tom Callaway',
                           'repo': 'ember',
                           'rev': 'aa2df80f3d8dd217c7cbfe2d3451190028f3fe14',
                           'stats': { 'files': { 'ember-0.6.3-gcc47.patch': { 'deletions': 0,
                                                                              'insertions': 26,
                                                                              'lines': 26}},
                                      'total': { 'deletions': 0,
                                                 'files': 1,
                                                 'insertions': 26,
                                                 'lines': 26}},
                           'summary': 'another missing patch? ridiculous.',
                           'username': 'spot'}},
      'timestamp': 1352998154.368305,
      'topic': 'org.fedoraproject.prod.git.receive'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - git.receive

- :func:`fedmsg.meta.msg2subtitle`

  - spot pushed to ember (master).  "another missing patch? ridiculous."

- :func:`fedmsg.meta.msg2link`

  - http://pkgs.fedoraproject.org/cgit/ember.git/commit/?h=master&id=aa2df80f3d8dd217c7cbfe2d3451190028f3fe14

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/git-logo.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/461761d9572bdc1d04925a1125a41797?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['spot'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['ember'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['ember/ember-0.6.3-gcc47.patch'])``



jenkins
-------

jenkins.build.failed
~~~~~~~~~~~~~~~~~~~~

`Jenkins <http://jenkins.cloud.fedoraproject.org/>`_ publishes these
messages when a build completes with a failure.

.. code-block:: python

    { u'i': 1,
      u'msg': { u'build': 165,
                u'project': 'fedora-mobile',
                u'slave': u'Fedora18',
                u'took': u'9.4 sec'},
      u'msg_id': u'2014-851eb465-56f2-4f3f-bf8a-2b86c95d1246',
      u'timestamp': 1390982532.0,
      u'topic': u'org.fedoraproject.prod.jenkins.build.failed'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - jenkins.build.failed

- :func:`fedmsg.meta.msg2subtitle`

  - Jenkins project 'fedora-mobile' failed to build

- :func:`fedmsg.meta.msg2link`

  - http://jenkins.cloud.fedoraproject.org/job/fedora-mobile/165/

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - 

- :func:`fedmsg.meta.msg2usernames`

 - ``set([])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['jenkins/fedora-mobile/build.failed'])``



jenkins.build.passed
~~~~~~~~~~~~~~~~~~~~

`Jenkins <http://jenkins.cloud.fedoraproject.org/>`_ publishes these
messages when a build completes successfully.

.. code-block:: python

    { u'i': 1,
      u'msg': { u'build': 174,
                u'project': 'fedora-mobile',
                u'slave': u'Fedora18',
                u'took': u'1 min 28 sec'},
      u'msg_id': u'2014-b035a3d4-078b-4733-9df6-be4f5da911bd',
      u'timestamp': 1392150202.0,
      u'topic': u'org.fedoraproject.prod.jenkins.build.passed'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - jenkins.build.passed

- :func:`fedmsg.meta.msg2subtitle`

  - Jenkins project 'fedora-mobile' built successfully

- :func:`fedmsg.meta.msg2link`

  - http://jenkins.cloud.fedoraproject.org/job/fedora-mobile/174/

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - 

- :func:`fedmsg.meta.msg2usernames`

 - ``set([])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['jenkins/fedora-mobile/build.passed'])``



jenkins.build.start
~~~~~~~~~~~~~~~~~~~

`Jenkins <http://jenkins.cloud.fedoraproject.org/>`_ publishes these
messages when a build starts.

.. code-block:: python

    { u'i': 1,
      u'msg': { u'build': 174, u'project': 'fedora-mobile', u'slave': u'Fedora18'},
      u'msg_id': u'2014-2ffb842d-7868-47e8-bfb6-910fb93d9aa9',
      u'timestamp': 1392150202.0,
      u'topic': u'org.fedoraproject.prod.jenkins.build.start'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - jenkins.build.start

- :func:`fedmsg.meta.msg2subtitle`

  - Jenkins project 'fedora-mobile' started building

- :func:`fedmsg.meta.msg2link`

  - http://jenkins.cloud.fedoraproject.org/job/fedora-mobile/174/

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - 

- :func:`fedmsg.meta.msg2usernames`

 - ``set([])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['jenkins/fedora-mobile/build.start'])``



mailman
-------

mailman.receive
~~~~~~~~~~~~~~~

`Discussion lists for the Fedora Project
<https://lists.fedoraproject.org>`_ run on mailman3.  When a new
message is published on a list, fedmsg will pop out one of these messages.
The following is an example of a new thread being started.

.. code-block:: python

    { 'i': 1,
      'msg': { 'mlist': { 'list_name': 'devel'},
               'msg': { 'archived-at': '/list/devel@mm3test.fedoraproject.org/message/HDMTECNRNUHZTSDGM2FDK6LGCMAS2PZ4/',
                        'cc': None,
                        'delivered-to': 'devel@lists.fedoraproject.org',
                        'from': 'Jaroslav Reznik <jreznik@redhat.com>',
                        'in-reply-to': None,
                        'message-id': '<306436886.6773069.1369333725371.JavaMail.root@redhat.com>',
                        'references': None,
                        'subject': '[Devel] Fedora 19 Beta status is Go, release on May 28, 2013',
                        'to': 'devel-announce@lists.fedoraproject.org,\n\ttest-announce@lists.fedoraproject.org,\n\tFedora Logistics List <logistics@lists.fedoraproject.org>',
                        'x-mailman-rule-hits': 'nonmember-moderation',
                        'x-mailman-rule-misses': 'approved; emergency; loop; member-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header',
                        'x-message-id-hash': 'HDMTECNRNUHZTSDGM2FDK6LGCMAS2PZ4'}},
      'timestamp': 1369334087.929804,
      'topic': 'org.fedoraproject.prod.mailman.receive',
      'username': 'mailman'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - mailman.receive

- :func:`fedmsg.meta.msg2subtitle`

  - jreznik wrote '[Devel] Fedora 19 Beta status is Go, release on May 28, 2013' to the devel list

- :func:`fedmsg.meta.msg2link`

  - https://lists.fedoraproject.org/hyperkitty/list/devel@mm3test.fedoraproject.org/message/HDMTECNRNUHZTSDGM2FDK6LGCMAS2PZ4/

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/35012533ff5290bd2231c7133bd07896?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['jreznik'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['306436886.6773069.1369333725371.JavaMail.root@redhat.com/message'])``



mailman.receive
~~~~~~~~~~~~~~~

`Discussion lists for the Fedora Project
<https://lists.fedoraproject.org>`_ run on mailman3.  When a new
message is published on a list, fedmsg will pop out one of these messages.
The following is an example of a reply to a thread.

.. code-block:: python

    { 'i': 4,
      'msg': { 'mlist': { 'list_name': 'devel'},
               'msg': { 'archived-at': '/list/devel@mm3test.fedoraproject.org/message/S3PHLMD7PGWXXLBN3GENHVK7JJ37UWLJ/',
                        'cc': None,
                        'delivered-to': 'devel@lists.fedoraproject.org',
                        'from': '"Nicolas Mailhot" <nicolas.mailhot@laposte.net>',
                        'in-reply-to': '<519DFB93.1060502@laiskiainen.org>',
                        'message-id': '<d4f0cefb4a7b845451ecab2c4026fe4d.squirrel@arekh.dyndns.org>',
                        'references': '<5de4f14ae46cce6de03cf68ca06526a9.squirrel@arekh.dyndns.org>\n\t<519DFB93.1060502@laiskiainen.org>',
                        'subject': '[Devel] Re:Software Management call for RFEs',
                        'to': '"Development discussions related to Fedora" <devel@lists.fedoraproject.org>',
                        'x-mailman-rule-hits': 'nonmember-moderation',
                        'x-mailman-rule-misses': 'approved; emergency; loop; member-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header',
                        'x-message-id-hash': 'S3PHLMD7PGWXXLBN3GENHVK7JJ37UWLJ'}},
      'timestamp': 1369322289.679402,
      'topic': 'org.fedoraproject.prod.mailman.receive',
      'username': 'mailman'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - mailman.receive

- :func:`fedmsg.meta.msg2subtitle`

  - On the devel list, nicolas.mailhot replied to '[Devel] Re:Software Management call for RFEs'

- :func:`fedmsg.meta.msg2link`

  - https://lists.fedoraproject.org/hyperkitty/list/devel@mm3test.fedoraproject.org/message/S3PHLMD7PGWXXLBN3GENHVK7JJ37UWLJ/

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/8b887fce5c60f931e8edf8e8e4907494?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['nicolas.mailhot'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['5de4f14ae46cce6de03cf68ca06526a9.squirrel@arekh.dyndns.org/519DFB93.1060502@laiskiainen.org/d4f0cefb4a7b845451ecab2c4026fe4d.squirrel@arekh.dyndns.org/message'])``



meetbot
-------

meetbot.meeting.complete
~~~~~~~~~~~~~~~~~~~~~~~~

Trusty old `zodbot <https://meetbot.fedoraproject.org/>`_ publishes
messages too!  Messages on this topic get published when an IRC meeting
ends.  Meetings may or may not have a title (which can be tricky).
Here's an example message where the title is specified:

.. code-block:: python

    { 'i': 16,
      'msg': { 'attendees': { 'threebean': 2, 'zodbot': 2},
               'chairs': { },
               'channel': '#channel',
               'meeting_topic': 'title',
               'owner': 'threebean',
               'url': 'http://logs.com/awesome'},
      'timestamp': 1345572862.556145,
      'topic': 'org.fedoraproject.prod.meetbot.meeting.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - meetbot.meeting.complete

- :func:`fedmsg.meta.msg2subtitle`

  - ralph ended meeting "title" in #channel

- :func:`fedmsg.meta.msg2link`

  - http://logs.com/awesome.html

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['titles/title', 'channels/#channel', 'attendees/ralph'])``



meetbot.meeting.complete
~~~~~~~~~~~~~~~~~~~~~~~~

Trusty old `zodbot <https://meetbot.fedoraproject.org/>`_ publishes
messages too!  Messages on this topic get published when an IRC meeting
ends.  Meetings may or may not have a title (which can be tricky).
Here's an example message where the title is **not** specified:

.. code-block:: python

    { 'i': 16,
      'msg': { 'attendees': { 'threebean': 2, 'zodbot': 2},
               'chairs': { },
               'channel': '#channel',
               'meeting_topic': None,
               'owner': 'threebean',
               'url': 'http://logs.com/awesome'},
      'timestamp': 1345572862.556145,
      'topic': 'org.fedoraproject.prod.meetbot.meeting.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - meetbot.meeting.complete

- :func:`fedmsg.meta.msg2subtitle`

  - ralph ended a meeting in #channel

- :func:`fedmsg.meta.msg2link`

  - http://logs.com/awesome.html

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['channels/#channel', 'attendees/ralph'])``



meetbot.meeting.start
~~~~~~~~~~~~~~~~~~~~~

Trusty old `zodbot <https://meetbot.fedoraproject.org/>`_ publishes
messages too!  Messages on this topic get published (somewhat obviously)
when a new IRC meeting is started.  The user starting the meeting may
specify a meeting title, but doesn't have to.  Here's an example
message with a specified meeting title:

.. code-block:: python

    { 'i': 16,
      'msg': { 'attendees': { 'threebean': 2, 'zodbot': 2},
               'chairs': { },
               'channel': '#channel',
               'meeting_topic': 'title',
               'owner': 'threebean',
               'url': 'http://logs.com/awesome'},
      'timestamp': 1345572862.556145,
      'topic': 'org.fedoraproject.prod.meetbot.meeting.start'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - meetbot.meeting.start

- :func:`fedmsg.meta.msg2subtitle`

  - ralph started meeting "title" in #channel

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['titles/title', 'channels/#channel', 'attendees/ralph'])``



meetbot.meeting.start
~~~~~~~~~~~~~~~~~~~~~

Trusty old `zodbot <https://meetbot.fedoraproject.org/>`_ publishes
messages too!  Messages on this topic get published (somewhat obviously)
when a new IRC meeting is started.  The user starting the meeting may
specify a meeting title, but doesn't have to.  Here's an example
message with no meeting title specified:

.. code-block:: python

    { 'i': 16,
      'msg': { 'attendees': { 'threebean': 2, 'zodbot': 2},
               'chairs': { },
               'channel': '#channel',
               'meeting_topic': None,
               'owner': 'threebean',
               'url': 'http://logs.com/awesome'},
      'timestamp': 1345572862.556145,
      'topic': 'org.fedoraproject.prod.meetbot.meeting.start'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - meetbot.meeting.start

- :func:`fedmsg.meta.msg2subtitle`

  - ralph started a meeting in #channel

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['channels/#channel', 'attendees/ralph'])``



meetbot.meeting.topic.update
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

As IRC meetings chug along, the chairperson may change the meeting;
zodbot publishes message for that!  An example **with** a title specified:

.. code-block:: python

    { 'i': 16,
      'msg': { 'attendees': { 'threebean': 2, 'zodbot': 2},
               'chairs': { },
               'channel': '#channel',
               'meeting_topic': 'title',
               'owner': 'threebean',
               'topic': 'Food',
               'url': 'http://logs.com/awesome'},
      'timestamp': 1345572862.556145,
      'topic': 'org.fedoraproject.prod.meetbot.meeting.topic.update'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - meetbot.meeting.topic.update

- :func:`fedmsg.meta.msg2subtitle`

  - ralph changed the topic of "title" to "Food" in #channel

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['titles/title', 'topics/Food', 'channels/#channel', 'attendees/ralph'])``



meetbot.meeting.topic.update
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

As IRC meetings chug along, the chairperson may change the meeting;
zodbot publishes message for that!  An example **without** a title
specified:

.. code-block:: python

    { 'i': 16,
      'msg': { 'attendees': { 'threebean': 2, 'zodbot': 2},
               'chairs': { },
               'channel': '#channel',
               'meeting_topic': None,
               'owner': 'threebean',
               'topic': 'Food',
               'url': 'http://logs.com/awesome'},
      'timestamp': 1345572862.556145,
      'topic': 'org.fedoraproject.prod.meetbot.meeting.topic.update'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - meetbot.meeting.topic.update

- :func:`fedmsg.meta.msg2subtitle`

  - ralph changed the topic to "Food" in #channel

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['topics/Food', 'channels/#channel', 'attendees/ralph'])``



nuancier
--------

nuancier.candidate.approved
~~~~~~~~~~~~~~~~~~~~~~~~~~~

These messages are published when **an admin approves** a candidate
submission to the "Nuancier" wallpaper voting app.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'gnokii',
               'candidate': { 'author': 'ralph',
                              'license': 'CC-BY-SA',
                              'name': 'Handsome',
                              'original_url': 'http://www.cyclelicio.us/wp-content/uploads/2013/07/skvidal.jpg',
                              'submitter': 'ralph'},
               'election': { 'date_end': 1393045200.0,
                             'date_start': 1392958800.0,
                             'id': 4,
                             'name': 'Fedora 22',
                             'submission_date_start': 1392786000.0,
                             'year': 2015}},
      'msg_id': '2014-32dce0de-5d80-4f9e-a445-d63b6f9e320f',
      'timestamp': 1392916813,
      'topic': 'org.fedoraproject.prod.nuancier.candidate.approved',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - nuancier.candidate.approved

- :func:`fedmsg.meta.msg2subtitle`

  - gnokii approved ralph's "Handsome" submission to the "Fedora 22" wallpaper election

- :func:`fedmsg.meta.msg2link`

  - http://www.cyclelicio.us/wp-content/uploads/2013/07/skvidal.jpg

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/a8515b5e9791457df6d40f38de8b7476?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['gnokii', 'ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['2015/Fedora 22/Handsome/candidate/approved'])``



nuancier.candidate.denied
~~~~~~~~~~~~~~~~~~~~~~~~~

These messages are published when **an admin denies** a candidate
submission to the "Nuancier" wallpaper voting app.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'gnokii',
               'candidate': { 'author': 'ralph',
                              'license': 'CC-BY-SA',
                              'name': 'Handsome',
                              'original_url': 'http://www.cyclelicio.us/wp-content/uploads/2013/07/skvidal.jpg',
                              'submitter': 'ralph'},
               'election': { 'date_end': 1393045200.0,
                             'date_start': 1392958800.0,
                             'id': 4,
                             'name': 'Fedora 22',
                             'submission_date_start': 1392786000.0,
                             'year': 2015}},
      'msg_id': '2014-32dce0de-5d80-4f9e-a445-d63b6f9e320f',
      'timestamp': 1392916813,
      'topic': 'org.fedoraproject.prod.nuancier.candidate.denied',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - nuancier.candidate.denied

- :func:`fedmsg.meta.msg2subtitle`

  - gnokii denied ralph's "Handsome" submission to the "Fedora 22" wallpaper election

- :func:`fedmsg.meta.msg2link`

  - http://www.cyclelicio.us/wp-content/uploads/2013/07/skvidal.jpg

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/a8515b5e9791457df6d40f38de8b7476?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['gnokii', 'ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['2015/Fedora 22/Handsome/candidate/denied'])``



nuancier.candidate.new
~~~~~~~~~~~~~~~~~~~~~~

These messages are published when **a contributor submits a new
candidate** for an existing election on the "Nuancier" wallpaper voting
app.

.. code-block:: python

    { 'i': 2,
      'msg': { 'agent': 'ralph',
               'candidate': { 'author': 'ralph',
                              'license': 'CC-BY-SA',
                              'name': 'Handsome',
                              'original_url': 'http://www.cyclelicio.us/wp-content/uploads/2013/07/skvidal.jpg',
                              'submitter': 'ralph'},
               'election': { 'date_end': 1393045200.0,
                             'date_start': 1392958800.0,
                             'id': 4,
                             'name': 'Fedora 22',
                             'submission_date_start': 1392786000.0,
                             'year': 2015}},
      'msg_id': '2014-0838ce6a-9f99-41d9-84a4-e076665d3b2b',
      'timestamp': 1392908853,
      'topic': 'org.fedoraproject.prod.nuancier.candidate.new',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - nuancier.candidate.new

- :func:`fedmsg.meta.msg2subtitle`

  - ralph uploaded a new candidate for the "Fedora 22" wallpaper election

- :func:`fedmsg.meta.msg2link`

  - http://www.cyclelicio.us/wp-content/uploads/2013/07/skvidal.jpg

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['2015/Fedora 22/Handsome/candidate/new'])``



nuancier.election.new
~~~~~~~~~~~~~~~~~~~~~

These messages are published when **an admin creates** a new election
on the "Nuancier" wallpaper voting app.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'election': { 'date_end': 1393045200.0,
                             'date_start': 1392786000.0,
                             'id': 4,
                             'name': 'Fedora 22',
                             'submission_date_start': 1392786000.0,
                             'year': '2015'}},
      'msg_id': '2014-88577310-f466-4c88-8deb-dc98c8abc09e',
      'timestamp': 1392908460,
      'topic': 'org.fedoraproject.prod.nuancier.election.new',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - nuancier.election.new

- :func:`fedmsg.meta.msg2subtitle`

  - ralph created a new election "Fedora 22"

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/nuancier/election/4

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['2015/Fedora 22/election/new'])``



nuancier.election.update
~~~~~~~~~~~~~~~~~~~~~~~~

These messages are published when **an admin updates the details** of
an existing election on the "Nuancier" wallpaper voting app.

.. code-block:: python

    { 'i': 2,
      'msg': { 'agent': 'ralph',
               'election': { 'date_end': 1393045200.0,
                             'date_start': 1392958800.0,
                             'id': 1,
                             'name': 'Fedora 21',
                             'submission_date_start': 1392958800.0,
                             'year': '2014'},
               'updated': ['election year', 'election name']},
      'msg_id': '2014-a97d68bd-bc9e-49e0-b028-f10297f36767',
      'timestamp': 1392907947,
      'topic': 'org.fedoraproject.prod.nuancier.election.update',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - nuancier.election.update

- :func:`fedmsg.meta.msg2subtitle`

  - ralph changed the following details on the "Fedora 21" election: election year, election name

- :func:`fedmsg.meta.msg2link`

  - https://apps.fedoraproject.org/nuancier/election/1

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['2014/Fedora 21/election/update'])``



pkgdb
-----

pkgdb.acl.update
~~~~~~~~~~~~~~~~

The Fedora `Package DB <https://admin.fedoraproject.org/pkgdb>`_
publishes these messages when an ACL changes on a package.

.. code-block:: python

    { 'i': 2,
      'msg': { 'acl': 'watchbugzilla',
               'agent': 'ralph',
               'package_listing': { 'collection': { 'branchname': 'EL-6',
                                                    'disttag': '.el6',
                                                    'name': 'Fedora EPEL',
                                                    'pendingurltemplate': None,
                                                    'publishurltemplate': None,
                                                    'version': '6'},
                                    'package': { 'description': None,
                                                 'name': 'python-sh',
                                                 'reviewurl': None,
                                                 'summary': 'Python module to simplify calling shell commands',
                                                 'upstreamurl': None},
                                    'point_of_contact': 'grover',
                                    'qacontact': None,
                                    'specfile': None},
               'status': 'Awaiting Review',
               'username': 'ralph'},
      'timestamp': 1357576703.125622,
      'topic': 'org.fedoraproject.prod.pkgdb.acl.update',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - pkgdb.acl.update

- :func:`fedmsg.meta.msg2subtitle`

  - ralph changed ralph's 'watchbugzilla' permission on python-sh (EL-6) to 'Awaiting Review'

- :func:`fedmsg.meta.msg2link`

  - https://admin.fedoraproject.org/pkgdb/acls/name/python-sh

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/packages/images/icons/package_128x128.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['grover', 'ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['python-sh'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['python-sh/acls/EL-6/watchbugzilla/ralph'])``



pkgdb.acl.user.remove
~~~~~~~~~~~~~~~~~~~~~

The Fedora `Package DB <https://admin.fedoraproject.org/pkgdb>`_
when a user is removed from a package ACL.

.. code-block:: python

    { 'i': 2,
      'msg': { 'agent': 'ralph',
               'collections': [],
               'package_listings': [ { 'collection': { 'branchname': 'EL-6',
                                                       'disttag': '.el6',
                                                       'name': 'Fedora EPEL',
                                                       'pendingurltemplate': None,
                                                       'publishurltemplate': None,
                                                       'version': '6'},
                                       'owner': 'orphan',
                                       'package': { 'description': None,
                                                    'name': 'php-zmq',
                                                    'reviewurl': None,
                                                    'summary': 'PHP 0MQ/zmq/zeromq extension',
                                                    'upstreamurl': None},
                                       'qacontact': None,
                                       'specfile': None},
                                     { 'collection': { 'branchname': 'F18',
                                                       'disttag': '.f18',
                                                       'name': 'Fedora',
                                                       'pendingurltemplate': None,
                                                       'publishurltemplate': None,
                                                       'version': '18'},
                                       'owner': 'orphan',
                                       'package': { 'description': None,
                                                    'name': 'php-zmq',
                                                    'reviewurl': None,
                                                    'summary': 'PHP 0MQ/zmq/zeromq extension',
                                                    'upstreamurl': None},
                                       'qacontact': None,
                                       'specfile': None}],
               'username': 'ralph'},
      'timestamp': 1357583297.886945,
      'topic': 'org.fedoraproject.prod.pkgdb.acl.user.remove',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - pkgdb.acl.user.remove

- :func:`fedmsg.meta.msg2subtitle`

  - ralph removed ralph from php-zmq (EL-6, F18)

- :func:`fedmsg.meta.msg2link`

  - https://admin.fedoraproject.org/pkgdb/acls/name/php-zmq

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/packages/images/icons/package_128x128.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['php-zmq'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['php-zmq/remove/ralph'])``



pkgdb.branch.clone
~~~~~~~~~~~~~~~~~~

The Fedora `Package DB <https://admin.fedoraproject.org/pkgdb>`_
publishes messages on this topic when a new branch is cloned for a
package.

.. code-block:: python

    { 'i': 2,
      'msg': { 'agent': 'ralph',
               'branch': 'f18',
               'master': 'devel',
               'package': 'php-zmq'},
      'timestamp': 1357581512.006664,
      'topic': 'org.fedoraproject.prod.pkgdb.branch.clone',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - pkgdb.branch.clone

- :func:`fedmsg.meta.msg2subtitle`

  - ralph branched php-zmq f18 from devel

- :func:`fedmsg.meta.msg2link`

  - https://admin.fedoraproject.org/pkgdb/acls/name/php-zmq

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/packages/images/icons/package_128x128.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['php-zmq'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['php-zmq/branch'])``



pkgdb.branch.complete
~~~~~~~~~~~~~~~~~~~~~

The Fedora `Package DB <https://admin.fedoraproject.org/pkgdb>`_
publishes messages like these when branching completes.

.. code-block:: python

    { u'i': 1,
      u'msg': { u'agent': u'ralph',
                u'collection_from': { u'branchname': u'devel',
                                      u'name': u'Fedora',
                                      u'pendingurltemplate': None,
                                      u'publishurltemplate': None,
                                      u'version': u'devel'},
                u'collection_to': { u'branchname': u'F-19',
                                    u'name': u'Fedora',
                                    u'pendingurltemplate': None,
                                    u'publishurltemplate': None,
                                    u'version': u'19'}},
      u'msg_id': u'2013-0eaf6d98-6259-4e1c-a113-e2c9284a6082',
      u'timestamp': 1379606342.105066,
      u'topic': u'org.fedoraproject.prod.pkgdb.branch.complete',
      u'username': u'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - pkgdb.branch.complete

- :func:`fedmsg.meta.msg2subtitle`

  - ralph's branch of F-19 from devel completed

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/packages/images/icons/package_128x128.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set([])``



pkgdb.branch.start
~~~~~~~~~~~~~~~~~~

The Fedora `Package DB <https://admin.fedoraproject.org/pkgdb>`_
publishes messages like these when branching starts.

.. code-block:: python

    { u'i': 1,
      u'msg': { u'agent': u'ralph',
                u'collection_from': { u'branchname': u'devel',
                                      u'name': u'Fedora',
                                      u'pendingurltemplate': None,
                                      u'publishurltemplate': None,
                                      u'version': u'devel'},
                u'collection_to': { u'branchname': u'F-19',
                                    u'name': u'Fedora',
                                    u'pendingurltemplate': None,
                                    u'publishurltemplate': None,
                                    u'version': u'19'}},
      u'msg_id': u'2013-0eaf6d98-6259-4e1c-a113-e2c9284a6082',
      u'timestamp': 1379606342.105066,
      u'topic': u'org.fedoraproject.prod.pkgdb.branch.start',
      u'username': u'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - pkgdb.branch.start

- :func:`fedmsg.meta.msg2subtitle`

  - ralph started a branch of F-19 from devel

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/packages/images/icons/package_128x128.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set([])``



pkgdb.collection.new
~~~~~~~~~~~~~~~~~~~~

The Fedora `Package DB <https://admin.fedoraproject.org/pkgdb>`_
publishes messages like these when an admin creates a new collection.

.. code-block:: python

    { u'i': 3,
      u'msg': { u'agent': u'ralph',
                u'collection': { u'branchname': u'F-19',
                                 u'name': u'Fedora',
                                 u'pendingurltemplate': None,
                                 u'publishurltemplate': None,
                                 u'version': u'19'}},
      u'msg_id': u'2013-68fd388e-60ca-4cf6-888d-b51161798496',
      u'timestamp': 1379607327.474346,
      u'topic': u'org.fedoraproject.prod.pkgdb.collection.new',
      u'username': u'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - pkgdb.collection.new

- :func:`fedmsg.meta.msg2subtitle`

  - ralph created a new collection for Fedora 19

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/packages/images/icons/package_128x128.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set([])``



pkgdb.collection.update
~~~~~~~~~~~~~~~~~~~~~~~

The Fedora `Package DB <https://admin.fedoraproject.org/pkgdb>`_
publishes messages like these when an admin creates a new collection.

.. code-block:: python

    { u'i': 27,
      u'msg': { u'agent': u'ralph',
                u'collection': { u'branchname': u'f18_b',
                                 u'name': u'Fedora',
                                 u'pendingurltemplate': u'http://.....',
                                 u'publishurltemplate': u'http://.....',
                                 u'version': u'18'},
                u'fields': [u'name', u'version']},
      u'msg_id': u'2013-478a321f-ddfc-4d4c-adeb-c777619da15a',
      u'timestamp': 1379607692.198447,
      u'topic': u'org.fedoraproject.prod.pkgdb.collection.update',
      u'username': u'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - pkgdb.collection.update

- :func:`fedmsg.meta.msg2subtitle`

  - ralph updated the following fields of the Fedora 18 collection: name, version

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/packages/images/icons/package_128x128.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set([])``



pkgdb.critpath.update
~~~~~~~~~~~~~~~~~~~~~

The Fedora `Package DB <https://admin.fedoraproject.org/pkgdb>`_
publishes messages on this topic when the critical path status of a
package changes (when it is either added, or removed from the critical
path).  For example:

.. code-block:: python

    { 'i': 2,
      'msg': { 'agent': 'ralph', 'critpath': True, 'package_listing_ids': []},
      'timestamp': 1357581512.006664,
      'topic': 'org.fedoraproject.prod.pkgdb.critpath.update',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - pkgdb.critpath.update

- :func:`fedmsg.meta.msg2subtitle`

  - ralph altered the critpath status for some packages

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/packages/images/icons/package_128x128.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set([])``



pkgdb.owner.update
~~~~~~~~~~~~~~~~~~

The Fedora `Package DB <https://admin.fedoraproject.org/pkgdb>`_
publishes this message when a package gets an new owner.  (It is
also published when a package is orphaned; the 'owner' field will have
the string 'orphan' as its value.)

.. code-block:: python

    { 'i': 3,
      'msg': { 'agent': 'ralph',
               'package_listing': { 'collection': { 'branchname': 'EL-6',
                                                    'disttag': '.el6',
                                                    'name': 'Fedora EPEL',
                                                    'pendingurltemplate': None,
                                                    'publishurltemplate': None,
                                                    'version': '6'},
                                    'package': { 'description': None,
                                                 'name': 'php-zmq',
                                                 'reviewurl': None,
                                                 'summary': 'PHP 0MQ/zmq/zeromq extension',
                                                 'upstreamurl': None},
                                    'point_of_contact': 'orphan',
                                    'qacontact': None,
                                    'specfile': None}},
      'timestamp': 1357580533.5999,
      'topic': 'org.fedoraproject.prod.pkgdb.owner.update',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - pkgdb.owner.update

- :func:`fedmsg.meta.msg2subtitle`

  - ralph changed owner of php-zmq (EL-6) to 'orphan'

- :func:`fedmsg.meta.msg2link`

  - https://admin.fedoraproject.org/pkgdb/acls/name/php-zmq

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/packages/images/icons/package_128x128.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['php-zmq'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['php-zmq/owner/EL-6'])``



pkgdb.package.new
~~~~~~~~~~~~~~~~~

The Fedora `Package DB <https://admin.fedoraproject.org/pkgdb>`_
publishes this message when a new package is added to the DB.  This
typically happens near the end of the Package Review Process as a
result of a `SCM Admin Request
<http://fedoraproject.org/wiki/Package_SCM_admin_requests>`_.

.. code-block:: python

    { 'i': 3,
      'msg': { 'agent': 'ralph',
               'package_listing': { 'collection': { 'branchname': 'devel',
                                                    'disttag': '.f19',
                                                    'name': 'Fedora',
                                                    'pendingurltemplate': None,
                                                    'publishurltemplate': None,
                                                    'version': '19'},
                                    'package': { 'description': None,
                                                 'name': 'php-zmq',
                                                 'reviewurl': None,
                                                 'summary': 'PHP 0MQ/zmq/zeromq extension',
                                                 'upstreamurl': None},
                                    'point_of_contact': 'lmacken',
                                    'qacontact': None,
                                    'specfile': None}},
      'timestamp': 1357580533.5999,
      'topic': 'org.fedoraproject.prod.pkgdb.package.new',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - pkgdb.package.new

- :func:`fedmsg.meta.msg2subtitle`

  - ralph added a new package 'php-zmq' (devel)

- :func:`fedmsg.meta.msg2link`

  - https://admin.fedoraproject.org/pkgdb/acls/name/php-zmq

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/packages/images/icons/package_128x128.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['lmacken', 'ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['php-zmq'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['php-zmq/create'])``



pkgdb.package.retire
~~~~~~~~~~~~~~~~~~~~

The Fedora `Package DB <https://admin.fedoraproject.org/pkgdb>`_
publishes messages on this topic when a package is retired.  For example:

.. code-block:: python

    { 'i': 2,
      'msg': { 'agent': 'ralph',
               'package_listing': { 'collection': { 'branchname': 'EL-6',
                                                    'disttag': '.el6',
                                                    'name': 'Fedora EPEL',
                                                    'pendingurltemplate': None,
                                                    'publishurltemplate': None,
                                                    'version': '6'},
                                    'owner': 'orphan',
                                    'package': { 'description': None,
                                                 'name': 'php-zmq',
                                                 'reviewurl': None,
                                                 'summary': 'PHP 0MQ/zmq/zeromq extension',
                                                 'upstreamurl': None},
                                    'qacontact': None,
                                    'specfile': None},
               'retirement': 'retired'},
      'timestamp': 1357583297.886945,
      'topic': 'org.fedoraproject.prod.pkgdb.package.retire',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - pkgdb.package.retire

- :func:`fedmsg.meta.msg2subtitle`

  - ralph retired php-zmq (EL-6)!

- :func:`fedmsg.meta.msg2link`

  - https://admin.fedoraproject.org/pkgdb/acls/name/php-zmq

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/packages/images/icons/package_128x128.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['php-zmq'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['php-zmq/retire'])``



pkgdb.package.update
~~~~~~~~~~~~~~~~~~~~

The Fedora `Package DB <https://admin.fedoraproject.org/pkgdb>`_
publishes this message when metadata for a package is updated.

.. code-block:: python

    { 'i': 144,
      'msg': { 'agent': 'ralph',
               'package_listing': { 'collection': { 'branchname': 'F-18',
                                                    'name': 'Fedora',
                                                    'pendingurltemplate': None,
                                                    'publishurltemplate': None,
                                                    'version': '18'},
                                    'package': { 'creation_date': 1379619917.0,
                                                 'name': 'guake',
                                                 'review_url': 'https://bugzilla.redhat.com/450189',
                                                 'status': 'Approved',
                                                 'summary': 'Top down terminal for GNOME',
                                                 'upstream_url': 'http://guake.org'},
                                    'point_of_contact': 'pingou'},
               'package_name': 'guake',
               'prev_status': 'Retired',
               'status': 'Approved'},
      'msg_id': '2013-c131fb95-0a2e-4426-95c3-09766e017d29',
      'timestamp': 1379605523.496933,
      'topic': 'org.fedoraproject.prod.pkgdb.package.update',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - pkgdb.package.update

- :func:`fedmsg.meta.msg2subtitle`

  - ralph made some updates to guake

- :func:`fedmsg.meta.msg2link`

  - https://admin.fedoraproject.org/pkgdb/acls/name/guake

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/packages/images/icons/package_128x128.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph', 'pingou'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['guake'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['guake/update'])``



planet
------

planet.post.new
~~~~~~~~~~~~~~~

The `Fedora Planet <https://planet.fedoraproject.org/>`_ publishes
messages of this topic whenever a new blog post is found.  Cool!

.. code-block:: python

    { 'i': 1,
      'msg': { 'face': 'https://secure.gravatar.com/avatar/ba940b433c2695635d32d2c4aec00540?s=140',
               'name': 'Ralph Bean',
               'post': { 'content': [ { 'base': 'http://threebean.org/blog/category/fedora/feed/index.xml',
                                        'language': None,
                                        'type': 'text/html',
                                        'value': '<div class="document">\n<p>Another test post for fedmsg+fedoraplanet.</p>\n</div>'}],
                         'guidislink': False,
                         'id': 'http://threebean.org/blog/test-post-6',
                         'link': 'http://threebean.org/blog/test-post-6',
                         'links': [ { 'href': 'http://threebean.org/blog/test-post-6',
                                      'rel': 'alternate',
                                      'type': 'text/html'}],
                         'summary': 'Test Post 6',
                         'summary_detail': { 'base': 'http://threebean.org/blog/category/fedora/feed/index.xml',
                                             'language': None,
                                             'type': 'text/html',
                                             'value': 'Test Post 6'},
                         'tags': [ { 'label': None,
                                     'scheme': None,
                                     'term': 'fedora'}],
                         'title': 'Test Post 6',
                         'title_detail': { 'base': 'http://threebean.org/blog/category/fedora/feed/index.xml',
                                           'language': None,
                                           'type': 'text/html',
                                           'value': 'Test Post 6'},
                         'updated': 'Wed, 30 Jan 2013 15:00:00 EST',
                         'updated_parsed': 1359576000.0},
               'username': 'ralph'},
      'timestamp': 1359579067.617802,
      'topic': 'org.fedoraproject.prod.planet.post.new',
      'username': 'planet-user'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - planet.post.new

- :func:`fedmsg.meta.msg2subtitle`

  - ralph posted "Test Post 6"

- :func:`fedmsg.meta.msg2link`

  - http://threebean.org/blog/test-post-6

- :func:`fedmsg.meta.msg2icon`

  - https://apps.fedoraproject.org/img/icons/planet_logo.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - https://secure.gravatar.com/avatar/ba940b433c2695635d32d2c4aec00540?s=140

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['threebean.org/blog/test-post-6'])``



summershum
----------

summershum.ingest.complete
~~~~~~~~~~~~~~~~~~~~~~~~~~

Fedora Infrastructure runs a background service called `summershum
<https://github.com/fedora-infra/summershum>`_, the role of which is to
compute and store hashes of every file of every tarball of every package in
Fedora.  This data is then to later be used in tests and analysis.

This message type is published by the summershum backend when it has
completed processing of a new tarball.

.. code-block:: python

    { 'i': 14,
      'msg': { 'original': { 'agent': 'rhughes',
                             'filename': 'gnome-online-accounts-3.11.90.tar.xz',
                             'md5sum': '7d32a7ed3653fe4c3de1fd3e9d1e1367',
                             'name': 'gnome-online-accounts'}},
      'msg_id': '2014-c5565d9f-edbe-4ec3-9d3a-d2005b32a817',
      'timestamp': 1392749080,
      'topic': 'org.fedoraproject.prod.summershum.ingest.complete',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - summershum.ingest.complete

- :func:`fedmsg.meta.msg2subtitle`

  - summershum ingested gnome-online-accounts-3.11.90.tar.xz for gnome-online-accounts

- :func:`fedmsg.meta.msg2link`

  - http://pkgs.fedoraproject.org/lookaside/pkgs/gnome-online-accounts/gnome-online-accounts-3.11.90.tar.xz/7d32a7ed3653fe4c3de1fd3e9d1e1367/gnome-online-accounts-3.11.90.tar.xz

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/72175d155a8b28b6a57d2340b9f58592?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['rhughes'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['gnome-online-accounts'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['digests/gnome-online-accounts/gnome-online-accounts-3.11.90.tar.xz/7d32a7ed3653fe4c3de1fd3e9d1e1367'])``



summershum.ingest.fail
~~~~~~~~~~~~~~~~~~~~~~

Fedora Infrastructure runs a background service called `summershum
<https://github.com/fedora-infra/summershum>`_, the role of which is to
compute and store hashes of every file of every tarball of every package in
Fedora.  This data is then to later be used in tests and analysis.

This message type is published by the summershum backend when it
**encounters some error** and cannot process a tarball.

.. code-block:: python

    { 'i': 15,
      'msg': { 'original': { 'agent': 'siddhesh',
                             'filename': 'glibc-2.19-58-ga4fb786.tar.gz',
                             'md5sum': '5f636f8001d1397fa6e233a1009df6c1',
                             'name': 'glibc'}},
      'msg_id': '2014-53a77b4a-637e-4b98-a84e-90febb65ab80',
      'timestamp': 1392749080,
      'topic': 'org.fedoraproject.prod.summershum.ingest.fail',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - summershum.ingest.fail

- :func:`fedmsg.meta.msg2subtitle`

  - yikes!  summershum failed to process glibc-2.19-58-ga4fb786.tar.gz for glibc

- :func:`fedmsg.meta.msg2link`

  - http://pkgs.fedoraproject.org/lookaside/pkgs/glibc/glibc-2.19-58-ga4fb786.tar.gz/5f636f8001d1397fa6e233a1009df6c1/glibc-2.19-58-ga4fb786.tar.gz

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/fd81d216a30015c59bf44d5c3b8be1cc?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['siddhesh'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['glibc'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['digests/glibc/glibc-2.19-58-ga4fb786.tar.gz/5f636f8001d1397fa6e233a1009df6c1'])``



summershum.ingest.start
~~~~~~~~~~~~~~~~~~~~~~~

Fedora Infrastructure runs a background service called `summershum
<https://github.com/fedora-infra/summershum>`_, the role of which is to
compute and store hashes of every file of every tarball of every package in
Fedora.  This data is then to later be used in tests and analysis.

This message type is published by the summershum backend when **begins
processing** a new tarball.

.. code-block:: python

    { 'i': 15,
      'msg': { 'original': { 'agent': 'siddhesh',
                             'filename': 'glibc-2.19-58-ga4fb786.tar.gz',
                             'md5sum': '5f636f8001d1397fa6e233a1009df6c1',
                             'name': 'glibc'}},
      'msg_id': '2014-53a77b4a-637e-4b98-a84e-90febb65ab80',
      'timestamp': 1392749080,
      'topic': 'org.fedoraproject.prod.summershum.ingest.start',
      'username': 'threebean'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - summershum.ingest.start

- :func:`fedmsg.meta.msg2subtitle`

  - summershum started working on glibc-2.19-58-ga4fb786.tar.gz for glibc

- :func:`fedmsg.meta.msg2link`

  - http://pkgs.fedoraproject.org/lookaside/pkgs/glibc/glibc-2.19-58-ga4fb786.tar.gz/5f636f8001d1397fa6e233a1009df6c1/glibc-2.19-58-ga4fb786.tar.gz

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/fd81d216a30015c59bf44d5c3b8be1cc?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['siddhesh'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set(['glibc'])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['digests/glibc/glibc-2.19-58-ga4fb786.tar.gz/5f636f8001d1397fa6e233a1009df6c1'])``



trac
----

trac.git.receive
~~~~~~~~~~~~~~~~

Messages are published on this topic when a users pushes commits
to a `fedorahosted <http://fedorahosted.org>`_ git repository.

The message format is very similar to the ``git.receive`` message type
for Fedora packages.

.. code-block:: python

    { 'i': 1,
      'msg': { 'commit': { 'agent': 'ralph',
                           'branch': 'dev',
                           'email': 'rbean@redhat.com',
                           'message': 'Another commit to test fedorahosted fedmsg.\n',
                           'name': 'Ralph Bean',
                           'repo': 'moksha',
                           'rev': '24bcd20d08a68320f82951ce20959bc6a1a6e79c',
                           'stats': { 'files': { 'README.rst': { 'deletions': 0,
                                                                 'insertions': 1,
                                                                 'lines': 1}},
                                      'total': { 'deletions': 0,
                                                 'files': 1,
                                                 'insertions': 1,
                                                 'lines': 1}},
                           'summary': 'Another commit to test fedorahosted fedmsg.',
                           'username': 'ralph'}},
      'timestamp': 1368046115.802794,
      'topic': 'org.fedoraproject.prod.trac.git.receive',
      'username': 'ralph'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - trac.git.receive

- :func:`fedmsg.meta.msg2subtitle`

  - ralph pushed some commits to the 'moksha' fedorahosted git repository

- :func:`fedmsg.meta.msg2link`

  - https://git.fedorahosted.org/cgit/moksha.git/commit/?id=24bcd20d08a68320f82951ce20959bc6a1a6e79c

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['moksha/git/README.rst'])``



trac.git.receive
~~~~~~~~~~~~~~~~

Messages are published on this topic when a users pushes commits
to a `fedorahosted <http://fedorahosted.org>`_ git repository.

The message format is very similar to the ``git.receive`` message type
for Fedora packages.

.. code-block:: python

    { 'i': 1,
      'msg': { 'commit': { 'agent': 'ralph',
                           'branch': 'dev',
                           'email': 'rbean@redhat.com',
                           'message': 'Another commit to test fedorahosted fedmsg.\n',
                           'name': 'Ralph Bean',
                           'path': '/srv/git/docs/about-fedora.git',
                           'repo': 'about-fedora',
                           'rev': '24bcd20d08a68320f82951ce20959bc6a1a6e79c',
                           'stats': { 'files': { 'README.rst': { 'deletions': 0,
                                                                 'insertions': 1,
                                                                 'lines': 1}},
                                      'total': { 'deletions': 0,
                                                 'files': 1,
                                                 'insertions': 1,
                                                 'lines': 1}},
                           'summary': 'Another commit to test fedorahosted fedmsg.',
                           'username': 'ralph'}},
      'timestamp': 1368046115.802794,
      'topic': 'org.fedoraproject.prod.trac.git.receive',
      'username': 'ralph'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - trac.git.receive

- :func:`fedmsg.meta.msg2subtitle`

  - ralph pushed some commits to the 'docs/about-fedora' fedorahosted git repository

- :func:`fedmsg.meta.msg2link`

  - https://git.fedorahosted.org/cgit/docs/about-fedora.git/commit/?id=24bcd20d08a68320f82951ce20959bc6a1a6e79c

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['docs/about-fedora/git/README.rst'])``



trac.ticket.delete
~~~~~~~~~~~~~~~~~~

You can actually permanently delete trac tickets, which is kind of
crazy.  If you do, a message looking something like this will be published.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'instance': { 'base_url': 'https://fedorahosted.org/moksha/',
                             'project_description': 'Moksha is an opensource plugin-based web framework that aims to simplify the creation of live widget dashboards.',
                             'project_icon': 'common/trac.ico',
                             'project_name': 'moksha',
                             'project_url': 'http://moksha.fedorahosted.org'},
               'ticket': { 'blockedby': '',
                           'blocking': '',
                           'cc': '',
                           'changetime': 1368042301.0,
                           'component': 'moksha',
                           'description': 'I installed the fedmsg plugin.',
                           'id': 249,
                           'keywords': '',
                           'milestone': '__unclassified__',
                           'owner': '',
                           'priority': 'major',
                           'reporter': 'ralph',
                           'resolution': 'fixed',
                           'status': 'closed',
                           'summary': 'Test ticket for fedmsg plugin',
                           'time': 1368039807.0,
                           'type': 'defect'}},
      'timestamp': 1368042385.176218,
      'topic': 'org.fedoraproject.prod.trac.ticket.delete',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - trac.ticket.delete

- :func:`fedmsg.meta.msg2subtitle`

  - ralph straight-up deleted a ticket on the moksha trac instance

- :func:`fedmsg.meta.msg2link`

  - https://fedorahosted.org/moksha/ticket/249

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['moksha/ticket/249'])``



trac.ticket.new
~~~~~~~~~~~~~~~

Messages are published on this topic when a user opens a new ticket
on a `fedorahosted <http://fedorahosted.org/>`_ trac instance.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'instance': { 'base_url': 'https://fedorahosted.org/moksha/',
                             'project_description': 'Moksha is an opensource plugin-based web framework that aims to simplify the creation of live widget dashboards.',
                             'project_icon': 'common/trac.ico',
                             'project_name': 'moksha',
                             'project_url': 'http://moksha.fedorahosted.org'},
               'ticket': { 'blockedby': '',
                           'blocking': '',
                           'cc': '',
                           'changetime': 1368043635.0,
                           'component': 'moksha',
                           'description': 'just testing fedmsg.',
                           'id': 249,
                           'keywords': '',
                           'milestone': '__unclassified__',
                           'owner': 'lmacken',
                           'priority': 'major',
                           'reporter': 'ralph',
                           'status': 'new',
                           'summary': 'test fedmsg',
                           'time': 1368043635.0,
                           'type': 'defect'}},
      'timestamp': 1368043636.294278,
      'topic': 'org.fedoraproject.prod.trac.ticket.new',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - trac.ticket.new

- :func:`fedmsg.meta.msg2subtitle`

  - ralph opened a new ticket on the moksha trac instance

- :func:`fedmsg.meta.msg2link`

  - https://fedorahosted.org/moksha/ticket/249

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['lmacken', 'ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['moksha/ticket/249'])``



trac.ticket.update
~~~~~~~~~~~~~~~~~~

Messages get emitted on this topic when someone updates a trac ticket
on a `fedorahosted <http://fedorahosted.org>`_ trac instance.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'author': 'ralph',
               'comment': 'Testing.',
               'instance': { 'base_url': 'https://fedorahosted.org/moksha/',
                             'project_description': 'Moksha is an opensource plugin-based web framework that aims to simplify the creation of live widget dashboards.',
                             'project_icon': 'common/trac.ico',
                             'project_name': 'moksha',
                             'project_url': 'http://moksha.fedorahosted.org'},
               'old_values': { },
               'ticket': { 'blockedby': '',
                           'blocking': '',
                           'cc': '',
                           'changetime': 1368040146.0,
                           'component': 'moksha',
                           'description': 'I installed the fedmsg plugin.',
                           'id': 249,
                           'keywords': '',
                           'milestone': '__unclassified__',
                           'owner': '',
                           'priority': 'major',
                           'reporter': 'ralph',
                           'resolution': '',
                           'status': 'new',
                           'summary': 'Test ticket for fedmsg plugin',
                           'time': 1368039807.0,
                           'type': 'defect'}},
      'timestamp': 1368040146.688652,
      'topic': 'org.fedoraproject.prod.trac.ticket.update',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - trac.ticket.update

- :func:`fedmsg.meta.msg2subtitle`

  - ralph updated a ticket on the moksha trac instance

- :func:`fedmsg.meta.msg2link`

  - https://fedorahosted.org/moksha/ticket/249

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['moksha/ticket/249'])``



trac.ticket.update
~~~~~~~~~~~~~~~~~~

Here's yet another example of an edit to a trac ticket.
In this one, the user has *closed* a ticket.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'author': 'ralph',
               'comment': '',
               'instance': { 'base_url': 'https://fedorahosted.org/moksha/',
                             'project_description': 'Moksha is an opensource plugin-based web framework that aims to simplify the creation of live widget dashboards.',
                             'project_icon': 'common/trac.ico',
                             'project_name': 'moksha',
                             'project_url': 'http://moksha.fedorahosted.org'},
               'old_values': { 'resolution': '', 'status': 'reopened'},
               'ticket': { 'blockedby': '',
                           'blocking': '',
                           'cc': '',
                           'changetime': 1368040802.0,
                           'component': 'moksha',
                           'description': 'I installed the fedmsg plugin.',
                           'id': 249,
                           'keywords': '',
                           'milestone': '__unclassified__',
                           'owner': '',
                           'priority': 'major',
                           'reporter': 'ralph',
                           'resolution': 'wontfix',
                           'status': 'closed',
                           'summary': 'Test ticket for fedmsg plugin',
                           'time': 1368039807.0,
                           'type': 'defect'}},
      'timestamp': 1368040802.747666,
      'topic': 'org.fedoraproject.prod.trac.ticket.update',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - trac.ticket.update

- :func:`fedmsg.meta.msg2subtitle`

  - ralph closed a ticket on the moksha trac instance as 'wontfix'

- :func:`fedmsg.meta.msg2link`

  - https://fedorahosted.org/moksha/ticket/249

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['moksha/ticket/249'])``



trac.ticket.update
~~~~~~~~~~~~~~~~~~

Here's another example of an edit to a trac ticket.  Here's one where
the ticket was originally closed and then was re-opened.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'author': 'ralph',
               'comment': '',
               'instance': { 'base_url': 'https://fedorahosted.org/moksha/',
                             'project_description': 'Moksha is an opensource plugin-based web framework that aims to simplify the creation of live widget dashboards.',
                             'project_icon': 'common/trac.ico',
                             'project_name': 'moksha',
                             'project_url': 'http://moksha.fedorahosted.org'},
               'old_values': { 'resolution': 'wontfix', 'status': 'closed'},
               'ticket': { 'blockedby': '',
                           'blocking': '',
                           'cc': '',
                           'changetime': 1368040591.0,
                           'component': 'moksha',
                           'description': 'I installed the fedmsg plugin.',
                           'id': 249,
                           'keywords': '',
                           'milestone': '__unclassified__',
                           'owner': '',
                           'priority': 'major',
                           'reporter': 'ralph',
                           'resolution': '',
                           'status': 'reopened',
                           'summary': 'Test ticket for fedmsg plugin',
                           'time': 1368039807.0,
                           'type': 'defect'}},
      'timestamp': 1368040591.046669,
      'topic': 'org.fedoraproject.prod.trac.ticket.update',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - trac.ticket.update

- :func:`fedmsg.meta.msg2subtitle`

  - ralph reopened a ticket on the moksha trac instance

- :func:`fedmsg.meta.msg2link`

  - https://fedorahosted.org/moksha/ticket/249

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['moksha/ticket/249'])``



trac.wiki.page.delete
~~~~~~~~~~~~~~~~~~~~~

These messages are fired off whenever a user *deletes* a wiki article
on a `fedorahosted <http://fedorahosted.org>`_ trac instance.

.. code-block:: python

    { 'i': 2,
      'msg': { 'agent': 'ralph',
               'instance': { 'base_url': 'https://fedorahosted.org/moksha/',
                             'project_description': 'Moksha is an opensource plugin-based web framework that aims to simplify the creation of live widget dashboards.',
                             'project_icon': 'common/trac.ico',
                             'project_name': 'moksha',
                             'project_url': 'http://moksha.fedorahosted.org'},
               'page': { 'author': '',
                         'comment': '',
                         'name': 'watwat',
                         'text': '',
                         'time': None,
                         'version': 0}},
      'timestamp': 1368043573.12363,
      'topic': 'org.fedoraproject.prod.trac.wiki.page.delete',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - trac.wiki.page.delete

- :func:`fedmsg.meta.msg2subtitle`

  - ralph straight-up deleted the 'watwat' wiki page on the moksha trac instance

- :func:`fedmsg.meta.msg2link`

  - https://fedorahosted.org/moksha/wiki/watwat

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['moksha/wiki/watwat'])``



trac.wiki.page.new
~~~~~~~~~~~~~~~~~~

Messages of this topic get published when someone creates a new wiki
page on a `fedorahosted <http://fedorahosted.org>`_ trac instance.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'instance': { 'base_url': 'https://fedorahosted.org/moksha/',
                             'project_description': 'Moksha is an opensource plugin-based web framework that aims to simplify the creation of live widget dashboards.',
                             'project_icon': 'common/trac.ico',
                             'project_name': 'moksha',
                             'project_url': 'http://moksha.fedorahosted.org'},
               'page': { 'author': 'ralph',
                         'comment': '',
                         'name': 'watwat',
                         'text': 'This is a test wiki page for fedmsg.',
                         'time': 1368042662.0,
                         'version': 1}},
      'timestamp': 1368042663.078511,
      'topic': 'org.fedoraproject.prod.trac.wiki.page.new',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - trac.wiki.page.new

- :func:`fedmsg.meta.msg2subtitle`

  - ralph created a new 'watwat' wiki page on the moksha trac instance

- :func:`fedmsg.meta.msg2link`

  - https://fedorahosted.org/moksha/wiki/watwat

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['moksha/wiki/watwat'])``



trac.wiki.page.rename
~~~~~~~~~~~~~~~~~~~~~

Messages are published on this topic when a user renames a wiki
page on a `fedorahosted <http://fedorahosted.org>_` trac instance.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'instance': { 'base_url': 'https://fedorahosted.org/moksha/',
                             'project_description': 'Moksha is an opensource plugin-based web framework that aims to simplify the creation of live widget dashboards.',
                             'project_icon': 'common/trac.ico',
                             'project_name': 'moksha',
                             'project_url': 'http://moksha.fedorahosted.org'},
               'old_name': 'watwat',
               'page': { 'author': 'ralph',
                         'comment': '',
                         'name': 'watwat2',
                         'text': 'This is a test wiki page for fedmsg.',
                         'time': 1368042662.0,
                         'version': 1}},
      'timestamp': 1368043322.110536,
      'topic': 'org.fedoraproject.prod.trac.wiki.page.rename',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - trac.wiki.page.rename

- :func:`fedmsg.meta.msg2subtitle`

  - ralph renamed the wiki page 'watwat' to 'watwat2' on the moksha trac instance

- :func:`fedmsg.meta.msg2link`

  - https://fedorahosted.org/moksha/wiki/watwat2

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['moksha/wiki/watwat2', 'moksha/wiki/watwat'])``



trac.wiki.page.update
~~~~~~~~~~~~~~~~~~~~~

Messages get emitted on this topic when someone updates a wiki page
on a `fedorahosted <http://fedorahosted.org>`_ trac instance.

.. code-block:: python

    { 'i': 1,
      'msg': { 'agent': 'ralph',
               'author': 'ralph',
               'comment': '',
               'instance': { 'base_url': 'https://fedorahosted.org/moksha/',
                             'project_description': 'Moksha is an opensource plugin-based web framework that aims to simplify the creation of live widget dashboards.',
                             'project_icon': 'common/trac.ico',
                             'project_name': 'moksha',
                             'project_url': 'http://moksha.fedorahosted.org'},
               'page': { 'author': 'ralph',
                         'comment': '',
                         'name': 'WikiStart',
                         'text': ' ... the full text of the wiki page goes here .. ',
                         'time': 1368038919.0,
                         'version': 47},
               't': 1368038919.0,
               'version': 47},
      'timestamp': 1368038919.389492,
      'topic': 'org.fedoraproject.prod.trac.wiki.page.update',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - trac.wiki.page.update

- :func:`fedmsg.meta.msg2subtitle`

  - ralph updated the 'WikiStart' wiki page on the moksha trac instance

- :func:`fedmsg.meta.msg2link`

  - https://fedorahosted.org/moksha/wiki/WikiStart?action=diff&version=47

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['moksha/wiki/WikiStart'])``



trac.wiki.page.version.delete
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Messages are published on this topic when a user deletes a
particular *version* of a page on a `fedorahosted
<http://fedorahosted.org>`_ trac instance.

.. code-block:: python

    { 'i': 2,
      'msg': { 'agent': 'ralph',
               'instance': { 'base_url': 'https://fedorahosted.org/moksha/',
                             'project_description': 'Moksha is an opensource plugin-based web framework that aims to simplify the creation of live widget dashboards.',
                             'project_icon': 'common/trac.ico',
                             'project_name': 'moksha',
                             'project_url': 'http://moksha.fedorahosted.org'},
               'page': { 'author': 'ralph',
                         'comment': '',
                         'name': 'WikiStart',
                         'text': ' .. wiki page text goes here. ..',
                         'time': 1368038919.0,
                         'version': 47}},
      'timestamp': 1368043436.144498,
      'topic': 'org.fedoraproject.prod.trac.wiki.page.version.delete',
      'username': 'apache'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - trac.wiki.page.version.delete

- :func:`fedmsg.meta.msg2subtitle`

  - ralph deleted a version of the 'WikiStart' wiki page on the moksha trac instance

- :func:`fedmsg.meta.msg2link`

  - https://fedorahosted.org/moksha/wiki/WikiStart?action=diff&version=47

- :func:`fedmsg.meta.msg2icon`

  - None

- :func:`fedmsg.meta.msg2secondary_icon`

  - http://www.gravatar.com/avatar/2f933f4364baaabd2d3ab8f0664faef2?s=64&d=http%3A%2F%2Ffedoraproject.org%2Fstatic%2Fimages%2Ffedora_infinity_64x64.png

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``set([])``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['moksha/wiki/WikiStart'])``



wiki
----

wiki.article.edit
~~~~~~~~~~~~~~~~~

Fedora's `Wiki <https://fedoraproject.org/wiki>`_ has a fedmsg hook
that publishes messages like this one when a user edits a page.

.. code-block:: python

    { 'msg': { 'base_rev_id': False,
               'minor_edit': 0,
               'revision': None,
               'section_anchor': None,
               'summary': '/* Mission */ ',
               'text': 'The diff goes here...',
               'title': 'Messaging SIG',
               'url': 'http://this-is-a-link.org',
               'user': 'Ralph',
               'watch_this': None},
      'timestamp': 1344350200,
      'topic': 'org.fedoraproject.prod.wiki.article.edit'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - wiki.article.edit

- :func:`fedmsg.meta.msg2subtitle`

  - Ralph made a wiki edit to "Messaging SIG"

- :func:`fedmsg.meta.msg2link`

  - http://this-is-a-link.org

- :func:`fedmsg.meta.msg2icon`

  - https://fedoraproject.org/w/skins/common/images/mediawiki.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['Messaging SIG-page'])``



wiki.upload.complete
~~~~~~~~~~~~~~~~~~~~

Fedora's `Wiki <https://fedoraproject.org/wiki>`_ hook also publishes
messages when a user upload some media (like a video or a picture).

.. code-block:: python

    { 'msg': { 'description': 'This is a beautiful cat',
               'file_exists': True,
               'major_mime': 'image',
               'media_type': 'BITMAP',
               'mime': 'image/jpeg',
               'minor_mime': 'jpeg',
               'size': 295667,
               'title': { 'mArticleID': 46586,
                          'mBacklinkCache': { },
                          'mCascadeRestriction': None,
                          'mCascadeSources': [],
                          'mCascadingRestrictions': [],
                          'mDbkeyform': 'Cat.jpg',
                          'mDefaultNamespace': 0,
                          'mFragment': '',
                          'mHasCascadingRestrictions': None,
                          'mInterwiki': '',
                          'mLatestID': False,
                          'mLength': -1,
                          'mNamespace': 6,
                          'mNotificationTimestamp': [],
                          'mOldRestrictions': False,
                          'mPrefixedText': 'File:Cat.jpg',
                          'mRedirect': None,
                          'mRestrictions': [],
                          'mRestrictionsExpiry': { 'create': 'infinity'},
                          'mRestrictionsLoaded': False,
                          'mTextform': 'Cat.jpg',
                          'mTitleProtection': False,
                          'mUrlform': 'Cat.jpg',
                          'mUserCaseDBKey': 'Cat.jpg',
                          'mWatched': None},
               'url': '/w/uploads/d/d1/Cat.jpg',
               'user_id': 8306,
               'user_text': 'Ralph'},
      'timestamp': 1344361406,
      'topic': 'org.fedoraproject.prod.wiki.upload.complete'}


The example message above, when passed to various routines in the
:mod:`fedmsg.meta` module, will produce the following outputs:

- :func:`fedmsg.meta.msg2title`

  - wiki.upload.complete

- :func:`fedmsg.meta.msg2subtitle`

  - Ralph uploaded File:Cat.jpg to the wiki: "This is a beautiful cat..."

- :func:`fedmsg.meta.msg2link`

  - None

- :func:`fedmsg.meta.msg2icon`

  - https://fedoraproject.org/w/skins/common/images/mediawiki.png

- :func:`fedmsg.meta.msg2secondary_icon`

  - None

- :func:`fedmsg.meta.msg2usernames`

 - ``set(['ralph'])``

- :func:`fedmsg.meta.msg2packages`

 - ``None``

- :func:`fedmsg.meta.msg2objects`

 - ``set(['w/uploads/d/d1/Cat.jpg'])``



