Pagure Dist Git Interactions With Fedora Messaging
Fedora Messaging provides tools and APIs to make using Fedora Project’s messaging infrastructure easier. These include a framework for declaring message schemas, a set of asynchronous APIs to consume messages, and services to easily run consumers.
Interaction Dependencies
Fedora Messaging makes use of the following dependencies to interact with and understand interactions made with Pagure Dist Git.
Pagure Messages
In order for Fedora Messaging to
comprehend the messages emitted from Pagure, it requires a helper library called Pagure
Messages. This package is distributed in the
official Fedora Project repositories here. and on PyPI here. It is important to note that at the time
of writing this investigation, the former seems to be in an unmaintained state and the
last update i.e. v0.0.6
was created around two years back. The PyPI releases are
fairly up-to-date with the most recent release i.e. v1.1.0
being created around four
months back.
Possible Interactions
The following are a set of documented interactions possible between Pagure Dist Git and Fedora Messaging.
Projects
The messages in this category follow the topic name pattern pagure.project.*
.
Creation of a project
Whenever a new project is created on either Pagure or Pagure Dist Git, the message of
schema topic pagure.project.new
is created on the Fedora Messaging bus. The class
definition can be found here.
Editing of a project
Whenever an existing project is edited on either Pagure or Pagure Dist Git, the message
of schema topic pagure.project.edit
is created on the Fedora Messaging bus. The
class definition can be found here.
Forking of a project
Whenever an existing project is forked on either Pagure or Pagure Dist Git, the message
of schema topic pagure.project.forked
is created on the Fedora Messaging bus. The
class definition can be found here.
Deleting of a project
Whenever an existing project is removed from either Pagure or Pagure Dist Git, the
message of schema topic pagure.project.deleted
is created on the Fedora Messaging
bus. The class definition can be found here.
Adding a group to a project
Whenever access is provided to a group for a project on either Pagure or Pagure Dist
Git, the message of schema topic pagure.project.group.added
is created on the Fedora
Messaging bus. The class definition can be found here.
Deleting a group from a project
Whenever access is revoked from a group for a project on either Pagure or Pagure Dist
Git, the message of schema topic pagure.project.group.removed
is created on the
Fedora Messaging bus. The class definition can be found here.
Updating a group on a project
Whenever access is updated to a group for a project on either Pagure or Pagure Dist Git,
the message of schema topic pagure.project.group.access.updated
is created on the
Fedora Messaging bus. The class definition can be found here.
Editing a tag on a project
Whenever tags are edited for a project on either Pagure or Pagure Dist Git, the message
of schema topic pagure.project.tag.edited
is created on the Fedora Messaging bus.
The class definition can be found here.
Deleting a tag on a project
Whenever tags are deleted from a project on either Pagure or Pagure Dist Git, the
message of schema topic pagure.project.tag.removed
is created on the Fedora
Messaging bus. The class definition can be found here.
Updating a user to a project
Whenever access is updated to a user for a project on either Pagure or Pagure Dist Git,
the message of schema topic pagure.project.user.access.updated
is created on the
Fedora Messaging bus. The class definition can be found here.
Adding a user to a project
Whenever access is provided to a user for a project on either Pagure or Pagure Dist Git,
the message of schema topic pagure.project.user.added
is created on the Fedora
Messaging bus. The class definition can be found here.
Deleting a user from a project
Whenever access is revoked from a user for a project on either Pagure or Pagure Dist
Git, the message of schema topic pagure.project.user.removed
is created on the
Fedora Messaging bus. The class definition can be found here.
Repositories
The messages in this category follow the topic name pattern pagure.git.*
.
Creation of a branch
Whenever a new branch is created on a project on either Pagure or Pagure Dist Git, the
message of schema topic pagure.git.branch.creation
is created on the Fedora
Messaging bus. The class definition can be found here.
Deletion of a branch
Whenever an existing branch is deleted on a project on either Pagure or Pagure Dist Git,
the message of schema topic pagure.git.branch.deletion
is created on the Fedora
Messaging bus. The class definition can be found here.
Reception of commits
Whenever a set of commits are pushed to an existing branch in a repository on either
Pagure or Pagure Dist Git, the message of schema topic pagure.git.receive
is created
on the Fedora Messaging bus. The class definition can be found here.
Creation of a tag
Whenever a new tag is created on a project on either Pagure or Pagure Dist Git, the
message of schema topic pagure.git.tag.creation
is created on the Fedora Messaging
bus. The class definition can be found here.
Deletion of a tag
Whenever an existing tag is deleted on a project on either Pagure or Pagure Dist Git,
the message of schema topic pagure.git.tag.deletion
is created on the Fedora
Messaging bus. The class definition can be found here.
Issues
The messages in this category follow the topic name pattern pagure.issue.*
.
Please note that these are not used in Pagure Dist Git as the Issues tab in Pagure Dist Git points to the Bugzilla page related to the said package.
Adding assignment to an issue ticket
Whenever an assignment is added to an existing issue ticket on a project present on
Pagure, the message of schema topic pagure.issue.assigned.added
is created on the
Fedora Messaging bus. The class definition can be found here.
Removing assignment from an issue ticket
Whenever an assignment is removed from an existing issue ticket on a project present on
Pagure, the message of schema topic pagure.issue.assigned.reset
is created on the
Fedora Messaging bus. The class definition can be found here.
Adding dependency to an issue ticket
Whenever a dependency is added to an existing issue ticket on a project present on
Pagure, the message of schema topic pagure.issue.dependency.added
is created on the
Fedora Messaging bus. The class definition can be found here.
Removing dependency from an issue ticket
Whenever a dependency is removed from an existing issue ticket from a project present on
Pagure, the message of schema topic pagure.issue.dependency.removed
is created on
the Fedora Messaging bus. The class definition can be found here.
Removing an issue ticket
Whenever an existing issue ticket is removed from a project present on either Pagure,
the message of schema topic pagure.issue.drop
is created on the Fedora Messaging
bus. The class definition can be found here.
Editing an issue ticket
Whenever an existing issue ticket is edited on a project present on either Pagure, the
message of schema topic pagure.issue.edit
is created on the Fedora Messaging bus.
The class definition can be found here.
Creating an issue ticket
Whenever a new issue ticket is created on a project present on either Pagure or , the
message of schema topic pagure.issue.new
is created on the Fedora Messaging bus. The
class definition can be found here.
Adding label to an issue ticket
Whenever labels are added to an existing issue ticket is created on a project present on
Pagure, the message of schema topic pagure.issue.tag.added
is created on the Fedora
Messaging bus. The class definition can be found here.
Removing label from an issue ticket
Whenever labels are removed from an existing issue ticket is created on a project
present on Pagure, the message of schema topic pagure.issue.tag.removed
is created
on the Fedora Messaging bus. The class definition can be found here.
Pull Requests
The messages in this category follow the topic name pattern pagure.pull-request.*
.
Adding a pull request assignee
Whenever an assignee is added to an existing pull request made against a project on
either Pagure or Pagure Dist Git, the message of schema topic
pagure.pull-request.assigned.added
is created on the Fedora Messaging bus. The class
definition can be found here.
Removing a pull request assignee
Whenever an assignee is removed from an existing pull request made against a project on
either Pagure or Pagure Dist Git, the message of schema topic
pagure.pull-request.assigned.reset
is created on the Fedora Messaging bus. The class
definition can be found here.
Closing a pull request
Whenever an existing pull request made against a project on either Pagure or Pagure Dist
Git is closed, the message of schema topic pagure.pull-request.closed
is created on
the Fedora Messaging bus. The class definition can be found here.
Adding a comment on a pull request
Whenever a comment is added to an existing pull request made against a project on either
Pagure or Pagure Dist Git is closed, the message of schema topic
pagure.pull-request.comment.added
is created on the Fedora Messaging bus. The class
definition can be found here.
Editing a comment on a pull request
Whenever a comment is edited on an existing pull request made against a project on
either Pagure or Pagure Dist Git is closed, the message of schema topic
pagure.pull-request.comment.edited
is created on the Fedora Messaging bus. The class
definition can be found here.
Adding a flag on a pull request
Whenever a flag is added to an existing pull request made against a project on either
Pagure or Pagure Dist Git is closed, the message of schema topic
pagure.pull-request.flag.added
is created on the Fedora Messaging bus. The class
definition can be found here.
Updating a flag on a pull request
Whenever a flag is updated on an existing pull request made against a project on either
Pagure or Pagure Dist Git is closed, the message of schema topic
pagure.pull-request.flag.updated
is created on the Fedora Messaging bus. The class
definition can be found here.
Editing a pull request body
Whenever the body of en existing pull request made against a project on either Pagure or
Pagure Dist Git is edited, the message of schema topic
pagure.pull-request.initial_comment.edited
is created on the Fedora Messaging bus.
The class definition can be found here.
Creating a pull request
Whenever a pull request is made against a project on either Pagure or Pagure Dist Git,
the message of schema topic pagure.pull-request.new
is created on the Fedora
Messaging bus. The class definition can be found here.
Rebasing a pull request
Whenever a pull request made against a project on either Pagure or Pagure Dist Git is
rebased, the message of schema topic pagure.pull-request.rebased
is created on the
Fedora Messaging bus. The class definition can be found here.
Reopening a pull request
Whenever a closed pull request made against a project on either Pagure or Pagure Dist
Git is reopened, the message of schema topic pagure.pull-request.reopened
is created
on the Fedora Messaging bus. The class definition can be found here.
Adding a tag on a pull request
Whenever a tag is added to an existing pull request made against a project on either
Pagure or Pagure Dist Git, the message of schema topic pagure.pull-request.tag.added
is created on the Fedora Messaging bus. The class definition can be found here.
Removing a tag on a pull request
Whenever a tag is removed from an existing pull request made against a project on either
Pagure or Pagure Dist Git, the message of schema topic
pagure.pull-request.tag.removed
is created on the Fedora Messaging bus. The class
definition can be found here.
Updating a pull request
Whenever an existing pull request made against a project on either Pagure or Pagure Dist
Git is updated, the message of schema topic pagure.pull-request.updated
is created
on the Fedora Messaging bus. The class definition can be found here.
Uncategorized
The messages in this category do not follow any any certain topic name pattern.
Adding a commit flag
Whenever a commit flag is added in a project on either Pagure or Pagure Dist Git, the
message of schema topic pagure.commit.flag.added
is created on the Fedora Messaging
bus. The class definition can be found here.
Updating a commit flag
Whenever a commit flag is updated in a project on either Pagure or Pagure Dist Git, the
message of schema topic pagure.commit.flag.updated
is created on the Fedora
Messaging bus. The class definition can be found here.
Editing a group
Whenever the edits to a group are saved on either Pagure or Pagure Dist Git, the message
of schema topic pagure.group.edit
is created on the Fedora Messaging bus. The class
definition can be found here.
Sending a test notification
For debugging purposes, a test notification can be sent over with the schema topic
pagure.Test.notification
is created on the Fedora Messaging bus. The class can be
found here.
Changes proposed
In order to switch out Pagure Dist Git for an alternative that provides a relatively compatible API pattern, the following changes must be made in the placed mentioned below.
Necessary
The base class for all the topic classes
PagureMessage
has two member variables storing information about the URL of the production (in__link__
) and staging (in__stg_link__
) deployments of either Pagure or Pagure Dist Git. This needs to be changed in accordance with the newer replacement planned. The class definition can be found here.The variable
SCHEMA_URL
currently leads to the pagehttps://fedoraproject.org/message-schema/
which does not exist. This needs to be changed to point to the correct URL.There are multiple variables that contain the API schema for Pagure and Pagure Dist Git, like
TagColored
,BOARD
,BOARD_STATUS
,BOARD_ISSUE
,USER
,GIT_RECEIVE_USER
,PAGURE_LOG
,MILESTONES
,PRIORITIES
,BASE_PROJECT
,PROJECT
,RELATED_PR
,ISSUE
,PULL_REQUEST
,COMMIT_FLAG
andGROUP
that must undergo changes to store the API schemas for the replacement platform.The schema project called
pagure-messages
need to be changed as well to accommodate the JSON schema for the API of the alternative and hence, publish messages accordingly.
Unnecessary
The message classes themselves and the way they operate could, more or less, stay the same as the way the messages are being sent to the Fedora Messaging bus would remain the same.
Comment added to an issue ticket
Whenever a comment is added to an existing issue ticket on a project present on either Pagure and Pagure Dist Git, the message of schema topic
pagure.issue.comment.added
is created on the Fedora Messaging bus. The class definition can be found here.