Proposal to retire PDC by splitting it among existing services ============================================================== Based on our research, currently we are using PDC for: - Bodhi knowing about packages on critical path - Retirement of packages and their SLA's - Metadata on nightly composes used by RelEng and Fedora QA The endpoints we use are: - /rest_api/v1/global-components - for storing package names - /rest_api/v1/component-branches/ - stores SLA's, active/retired and critical-path flag - /rest_api/v1/component-branch-slas/ - auxiliary endpoint for SLA's - /rest_api/v1/compose-images//rest_api/v1/compose-images/ - stores composeinfo.json and image-manifest.json - /rest_api/v1/releases/ - metadata on type (ga, updates, eus, aus, els, fast, updates-testing) of a release of a product version and if it is active - /rest_api/v1/rpms/ - liks rpms to composes - /rest_api/v1/product-versions - stores major versions of fedora Bodhi ----- Bodhi would take over responsibilities of - /rest_api/v1/releases/ - /rest_api/v1/component-branches/ - partially, just the critical-path flag Bodhi already has concept that maps to releases and components, we should be able to create auxiliary table that will pair these with additional metadata, mostyl the critical-path flag, that previously had to be queried from PDC. PDC actually isn't the source-of-truth for packages on critical path. The source of truth, according to https://fedoraproject.org/wiki/Critical_path_package is in https://pagure.io/fedora-comps/tree/main when you search for groups with critical-path-* prefix. For example: https://pagure.io/fedora-comps/blob/main/f/comps-f35.xml.in#_622 The data is available through dnf, but generating it can be really slow, PDC is then used as a sort of a pre-computed cache. To update it, we used to use https://docs.pagure.org/releng/sop_update_critpath.html but now we have https://pagure.io/fedora-infra/toddlers/blob/main/f/toddlers/plugins/pdc_update_critpath.py Only place we actually use the information during the fedora release is in Bodhi, to have stricter requirements on `critpath` package updates in Bodhi: https://github.com/fedora-infra/bodhi/blob/master/bodhi/server/util.py#L192 Pagure-dist-git --------------- Pagure-dist-git would take over responsibilities for - /rest_api/v1/product-versions - /rest_api/v1/global-components - /rest_api/v1/component-branches/ - /rest_api/v1/component-branch-slas/ Pagure already de-facto has a database of global-components (the repositories), and product-versions (repository branches) and it uses PDC api to query component-branches if the package was retired, with auxiliary table in pagure-dist-git storing reason for orphanning. Remaining endpoints ------------------- /rest_api/v1/compose-images/ - as we are mostly storing json blobs, based on discussions, we should just store the json in network-accessible file-server. /rest_api/v1/rpms/ - this is only information that so far doesn't fit into any existing application. QA is using it to query what packages are in particular composes.