arc/docs/dist-git-move/summary.rst
Michal Konecny 9d481adaa9 Add missing API endpoints from packit investigation
Signed-off-by: Michal Konecny <mkonecny@redhat.com>
2023-12-11 09:40:42 +00:00

121 lines
4.9 KiB
ReStructuredText

.. _summary:
Summary of Dist Git Deployment
==============================
This document is a summary of all the interactions with all the services identified
in this investigation. It also summarize the features that are currently available
in current dist git deployment.
Here is a diagram showing all the interactions between dist git and services in Fedora
infrastructure.
.. image:: ../_static/dist_git_interactions.drawio.png
:target: ../_images/dist_git_interactions.drawio.png
API
----
Following is the list of all dist git API endpoints that are currently used by services
in Fedora infrastructure.
More information about endpoints could be found in `API documentation
<https://src.fedoraproject.org/api/0>`_.
- ``/api/0/fork`` creates a fork of project
- ``/api/0/projects`` lists all the projects
- ``/api/0/<namespace>/<package_name>`` returns all the info about project
- ``/api/0/<namespace>/<package_name>/c/<commit_hash>/flag`` adds/edits flag on commit
- ``/api/0/<namespace>/<package_name>/git/branches`` modifies ACL for the git repository
- ``/api/0/<namespace>/<package_name>/git/modifyacls`` lists all branches in the git repository
- ``/api/0/<namespace>/<package_name>/hascommit`` checks whether a specified user has commit
access to repository
- ``/api/0/<namespace>/<package_name>/pull-request/new`` opens a new pull request
- ``/api/0/<namespace>/<package_name>/pull-request/<pr_id>/flag`` adds/edits flag on pull request
- ``/api/0/<namespace>/<package_name>/pull-request/<pr-id>/merge`` merges a pull request
- ``/api/0/<namespace>/<package_name>/watchers/update`` sets watch status for specified user
- ``/_dg/anitya/<namespace>/<package_name>`` gets/sets monitoring settings
- ``/_dg/bzoverrides/<namespace>/<package_name>`` gets/sets the bugzilla overrides for
the project. Used for EPEL maintainers.
- ``/_dg/orphan/<namespace>/<package_name>`` orphans a package
Messaging Schema
----------------
Following is the list of all the dist git topics that are being listened by services
in Fedora Infrastructure.
More information about messaging schema could be found in `Fedora Messaging documentation
<https://fedora-messaging.readthedocs.io/en/stable/user-guide/schemas.html#pagure>`_
- ``org.fedoraproject.prod.pagure.git.receive`` when commit is pushed to repository
- ``org.fedoraproject.prod.pagure.pull-request.new`` when new PR is opened
- ``org.fedoraproject.prod.pagure.pull-request.rebased`` when PR is rebased
- ``org.fedoraproject.prod.pagure.pull-request.updated`` when PR is updated
- ``org.fedoraproject.prod.pagure.pull-request.comment.added`` when comment is added to PR
HTTP Endpoints
--------------
Following is the list of all the dist git HTTP endpoints that are being accessed by services
in Fedora Infrastructure.
- ``/<namespace>/<package_name>/blob/rawhide/f/gating.yaml`` to get the Rawhide
gating settings. This file is in the default branch.
- ``/<namespace>/<package_name>/raw/rawhide/f/dead.package`` to check if the package is
retired. This file is the only file in default branch when the package is retired.
- ``/<namespace>/<package_name>/raw/<branch>/f/<package_name>.yaml`` to obtain
definition file for module
- ``/extras/pagure_bz.json`` to get list of maintainers for packages.
- ``/extras/pagure_owner_alias.json`` to get owners of packages.
- ``/extras/pagure_poc.json`` to get point of contacts for packages.
Git Interactions
----------------
On dist git every package is also git repository and hence it could be cloned and allow the
packager to do any git operation with it.
Access Control
--------------
Dist git is using `ACL implementation
<https://pagure.io/pagure/blob/master/f/pagure/lib/git_auth.py>`_ from Pagure.
Access Control Lists are used to control permissions of users to package sources.
Web Interface Features
----------------------
This is a list of specific UI features that are not inherited from Pagure. The rest
is inherited from Pagure.
- Links to `Koji <https://koji.fedoraproject.org/koji/>`_,
`Bodhi <https://bodhi.fedoraproject.org/>`_,
`Bugzilla <https://bugzilla.redhat.com>`_,
`Fedora Packages <https://packages.fedoraproject.org/>`_
and `Koschei <https://koschei.fedoraproject.org/>`_
- ``Issues`` tab is just a link to bugzilla tracker for the repository
- Monitoring status setting (backend implemented in `dist git
<https://pagure.io/pagure-dist-git/blob/master/f/pagure_distgit/plugin.py>`_)
- Orphaning and taking orphaned projects (backend implemented in `dist git
<https://pagure.io/pagure-dist-git/blob/master/f/pagure_distgit/plugin.py>`_)
Lookaside Cache
---------------
https://src.fedoraproject.org/repo/pkgs/ is hosting lookaside cache, which is used
by build system to obtain sources for the packages. It is hosted on same machine as dist
git and contains folder structure in which the sources are stored.
FAS integration
---------------
Dist git is using `FAS integration
<https://pagure.io/pagure/blob/master/f/pagure/ui/oidc_login.py>`_ from Pagure.