Story #4707
closedFolder structure of the deb repos does not match upstreams
100%
Description
Current Behavior: the pulp_deb plugin seems to creates folders under /dists/ based on the codename from the upstream Release file. For example, when I use the following command:
pulp-admin deb repo create ... --feed http://us.archive.ubuntu.com/ubuntu/ --releases bionic-updates
pulp creates the following folder structure:
.../dists/bionic/...
"bionic" is the value of "Codename" from http://us.archive.ubuntu.com/ubuntu/dists/bionic-updates/Release
It has been noticed that the same behavior where "Codename" is used as a folder name under /dists is present with other versions of ubuntu (xenial) and debian (stretch).
Expected Behavior: In the upstream (see the link above), the folder name seems to be based on the "Suite" value of the Release file which is different from the codename.
Proposed Approach: Use the upstream directory structure based on the Suite value.
Related issues
Add the distribution field to the DB models
Within a standard Debian repository structure, the term "distribution" refers to the unique string given by the path segment between the "dists/" folder, and some "Release" file (without the trailing slash).
Since each "Release" file in the directory structure is associated with exactly one unique distribution string, the terms "distribution" and "release" can be (and often are) used interchangably.
The distribution string is most commonly (but not always) given by either the "codename" or the "suite". The pulp_deb implementation prior to this commit, has assumed that the distribution string is always equal to codename, and has therefore imposed a uniqueness constraint on the codename for all releases/distributions within a single repository.
Since upstream repository sources make no such assumption and are not necessarily structured using the codename, this has lead to a plathora of unpredictable and buggy behaviour when synchronizing upstream repositories with 'codename != distribution'.
This change fixes these problems by introducing and using a "distribution" field for both the units_deb_release and units_deb_component collections.
revealed #4871 (depends on the fix for this issue) https://pulp.plan.io/issues/4871
ref #3464, #4055 https://pulp.plan.io/issues/3464 https://pulp.plan.io/issues/4055
fixes #4138, #4705, #4707 https://pulp.plan.io/issues/4138 https://pulp.plan.io/issues/4705 https://pulp.plan.io/issues/4707