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.

../_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.

  • /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

  • 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 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.

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 from Pagure.