Story #5202

Updated by bmbouter over 2 years ago

For now, mirror all images and a main yum repo from a kickstart repo.

h3. Design

Have the FirstStage of pulp_rpm try to download and parse the tree info file. From this file create the declarative content unit of the DistributionTree model (the actual content unit). Have the Stages API process this unit like any other.

When actually saving the DistributionTree content unit in the ContentUnitSaver stage, have any additional model creation happen then.

h3. Syncing Sub Repos

Some entries in the kickstart tree identify a "sub repo". that's not an official term, but it's intended to mean another valid repodata folder that identifies another set of RPMs that is outside of the main /repodata/ folder. One main challenge is efficiently syncing these "sub repos".

To recap the sub-repo modeling a XXXXX model has a ForiegnKey to Repository and is a OneForOne field ForeignKey. When syncing, the goal is that the same repodata parsing code in FirstStage is reused in parsing these repodata files for sub-repos. The difference is that the main repo Stages API is inspecting repo A for units already existing, while subrepo 1 needs to inspect Repo B, and subrepo 2 inspects Repo C, etc.

The challenge is that currently the Stages API only are able to handle "one repo" so to achieve ^ design we would need to extend the Stages API itself. I believe this is do-able and reasonable, but it's a required change. It's effectively making the Stages API "multi-sync" capable.