From 19d6128ec61d34382724be461a8715fbcbf7eb92 Mon Sep 17 00:00:00 2001 From: Akashdeep Dhar Date: Mon, 6 Nov 2023 13:14:20 +0530 Subject: [PATCH] Document Dist Git interactions with Fedora Messaging Signed-off-by: Akashdeep Dhar --- docs/dist-git-move/index.rst | 1 + docs/dist-git-move/messaging.rst | 478 +++++++++++++++++++++++++++++++ 2 files changed, 479 insertions(+) create mode 100644 docs/dist-git-move/messaging.rst diff --git a/docs/dist-git-move/index.rst b/docs/dist-git-move/index.rst index 961f3c5..f738ba5 100644 --- a/docs/dist-git-move/index.rst +++ b/docs/dist-git-move/index.rst @@ -48,6 +48,7 @@ Index hotness notifications toddlers + messaging Conclusions ---- diff --git a/docs/dist-git-move/messaging.rst b/docs/dist-git-move/messaging.rst new file mode 100644 index 0000000..363e38c --- /dev/null +++ b/docs/dist-git-move/messaging.rst @@ -0,0 +1,478 @@ +.. _messaging: + +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 `_. + +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 `_. + +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 page + ``https://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`` and ``GROUP`` + 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.