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/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 repositoryorg.fedoraproject.prod.pagure.pull-request.new
when new PR is openedorg.fedoraproject.prod.pagure.pull-request.rebased
when PR is rebasedorg.fedoraproject.prod.pagure.pull-request.updated
when PR is updatedorg.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.