Story #5086
Updated by daviddavis about 5 years ago
h3. Problem To allow offline update or installation, as well as "cheap" hosting on a "dumb" http file server, export of pulp content distribution is required. Pulp2 has this in the manual https://docs.pulpproject.org/en/2.18/plugins/pulp_rpm/user-guide/recipes.html#export-repositories-and-repository-groups h3. Design In Pulp3 an 'exporter' can send content out of a Pulp system. An exporter named FileSystemExporter should be created that accepts a the full path to a file system the place it should export content. FileSystemExporter should be a base abstract class that contains export. Additionally the logic to export a set of content to a file system location. If the content is on the filesystem, it will use hardlinks. Otherwise (eg using S3) it will write the file to the filesystem. The base FileSystemExporter should be extended in core by two Master classes, FileSystemRepoExporter and FileSystemPublicationExporter. The FileSystemRepoExporter takes either a 'repository' or 'repository_version' but not both. If 'repository' it will export publish the latest repository_version. The FileSystemPublicationExporter takes a publication and exports it. A plugin can extend and define a Detail class for one of these two Master classes in order to export its content. +note+ Explore the possibility to export from multiple repos h3. Implementation It will write the entire repository to a temporary area on-disk and then shell out to rsync. h3. On Demand Content This feature does not work for on-demand content because the content must be present locally for Pulp to write it to a filesystem.