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.
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/forkcreates a fork of project/api/0/projectslists all the projects/api/0/<namespace>/<package_name>returns all the info about project/api/0/<namespace>/<package_name>/c/<commit_hash>/flagadds/edits flag on commit/api/0/<namespace>/<package_name>/git/branchesmodifies ACL for the git repository/api/0/<namespace>/<package_name>/git/modifyaclslists all branches in the git repository/api/0/<namespace>/<package_name>/hascommitchecks whether a specified user has commit access to repository/api/0/<namespace>/<package_name>/pull-request/newopens a new pull request/api/0/<namespace>/<package_name>/pull-request/<pr_id>/flagadds/edits flag on pull request/api/0/<namespace>/<package_name>/pull-request/<pr-id>/mergemerges a pull request/api/0/<namespace>/<package_name>/watchers/updatesets 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.receivewhen commit is pushed to repositoryorg.fedoraproject.prod.pagure.pull-request.newwhen new PR is openedorg.fedoraproject.prod.pagure.pull-request.rebasedwhen PR is rebasedorg.fedoraproject.prod.pagure.pull-request.updatedwhen PR is updatedorg.fedoraproject.prod.pagure.pull-request.comment.addedwhen 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.yamlto get the Rawhide gating settings. This file is in the default branch./<namespace>/<package_name>/raw/rawhide/f/dead.packageto 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>.yamlto obtain definition file for module/extras/pagure_bz.jsonto get list of maintainers for packages./extras/pagure_owner_alias.jsonto get owners of packages./extras/pagure_poc.jsonto 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.