[Pulp-dev] Composed Repositories
Jeff Ortel
jortel at redhat.com
Tue May 15 14:42:25 UTC 2018
On 05/15/2018 05:58 AM, Austin Macdonald wrote:
> Here's another complexity, how do 2 plugins create a single publication?
The plugin API could make this seamless.
> We basically have the same problem of 2 parallel operations creating
> content from a single source.
I don't think so. plugins should not manipulate content outside of
their domain (other plugins content) so either serial or parallel should
be safe.
>
> On Tue, May 15, 2018, 06:27 Ina Panova <ipanova at redhat.com
> <mailto:ipanova at redhat.com>> wrote:
>
> +1 on not introducing dependencies between plugins.
>
> What will be the behavior in case there is a composed repo of rpm
> and ks trees but just the rpm plugin is installed?
>
> Do we fail and say we cannot sync this repo at all or we just sync
> the rpm part?
>
>
> Assuming plugins do not depend on each other, I think that when each
> plugin looks at the upstream repo, they will only "see" the content of
> that type. Conceptually, we will have 2 remotes, so it will feel like
> we are syncing from 2 totally distinct repositories.
>
> The solution I've been imagining is a lot like 2. Each plugin would
> sync to a *separate repository.* These separate repositories are then
> published creating *separate publications*. This approach allows the
> plugins to live completely in ignorance of each other.
>
> The final step is to associate *both publications to one
> distribution*, which composes the publications as they are served.
>
> The downside is that we have to sync and publish twice, and that the
> resulting versions and publications aren't locked together. But I
> think this is better than leaving versions and publications unfinished
> with the assumption that another plugin will finish the job. Maybe
> linking them together could be a good use of the notes field.
Pulp should support repositories with composed (mixed) content for the
same reason RH does. The repository is a collection of content that
users want to manage together. Consider the promotion cases: dev, test,
prod.
>
>
> Depends how we plan this ^ i guess we'll decide which option 1 or
> 2 fits better.
>
> Don't want to go wild, but what if notion of composed repos will
> be so popular in the future that's its amount will increase? I
> think we do want to at least partially being able to sync it and
> not take the approach all or nothing?
>
> #2 speaks to me more for now.
>
>
>
>
> --------
> Regards,
>
> Ina Panova
> Software Engineer| Pulp| Red Hat Inc.
>
> "Do not go where the path may lead,
> go instead where there is no path and leave a trail."
>
> On Mon, May 14, 2018 at 9:44 PM, Jeff Ortel <jortel at redhat.com
> <mailto:jortel at redhat.com>> wrote:
>
> Let's brainstorm on something.
>
> Pulp needs to deal with remote repositories that are composed
> of multiple content types which may span the domain of a
> single plugin. Here are a few examples. Some Red Hat RPM
> repositories are composed of: RPMs, DRPMs, , ISOs and
> Kickstart Trees. Some OSTree repositories are composed of
> OSTrees & Kickstart Trees. This raises a question:
>
> How can pulp3 best support syncing with remote repositories
> that are composed of multiple (unrelated) content types in a
> way that doesn't result in plugins duplicating support for
> content types?
>
> Few approaches come to mind:
>
> 1. Multiple plugins (Remotes) participate in the sync flow to
> produce a new repository version.
> 2. Multiple plugins (Remotes) are sync'd successively each
> producing a new version of a repository. Only the last
> version contains the fully sync'd composition.
> 3. Plugins share code.
> 4. Other?
>
>
> Option #1: Sync would be orchestrated by core or the user so
> that multiple plugins (Remotes) participate in populating a
> new repository version. For example: the RPM plugin (Remote)
> and the Kickstart Tree plugin (Remote) would both be sync'd
> against the same remote repository that is composed of both
> types. The new repository version would be composed of the
> result of both plugin (Remote) syncs. To support this, we'd
> need to provide a way for each plugin to operate seamlessly on
> the same (new) repository version. Perhaps something internal
> to the RepositoryVersion. The repository version would not be
> marked "complete" until the last plugin (Remote) sync has
> succeeded. More complicated than #2 but results in only
> creating truly complete versions or nothing. No idea how this
> would work with current REST API whereby plugins provide sync
> endpoints.
>
> Option #2: Sync would be orchestrated by core or the user so
> that multiple plugins (Remotes) create successive repository
> versions. For example: the RPM plugin (Remote) and the
> Kickstart Tree plugin (Remote) would both be sync'd against
> the same remote repository that is a composition including
> both types. The intermediate versions would be incomplete.
> Only the last version contains the fully sync'd composition.
> This approach can be supported by core today :) but will
> produce incomplete repository versions that are marked
> complete=True. This /seems/ undesirable, right? This may not
> be a problem for distribution since I would imaging that only
> the last (fully composed) version would be published. But
> what about other usages of the repository's "latest" version?
>
> Option #3: requires a plugin to be aware of specific
> repository composition(s); other plugins and creates a code
> dependency between plugins. For example, the RPM plugin could
> delegate ISOs to the File plugin and Kickstart Trees to the
> KickStart Tree plugin.
>
> For all options, plugins (Remotes) need to limit sync to
> affect only those content types within their domain. For
> example, the RPM (Remote) sync cannot add/remove ISO or KS Trees.
>
> I am an advocate of some from of options #1 or #2. Combining
> plugins (Remotes) as needed to deal with arbitrary
> combinations within remote repositories seems very powerful;
> does not impose complexity on plugin writers; and does not
> introduce code dependencies between plugins.
>
> Thoughts?
>
> _______________________________________________
> Pulp-dev mailing list
> Pulp-dev at redhat.com <mailto:Pulp-dev at redhat.com>
> https://www.redhat.com/mailman/listinfo/pulp-dev
>
>
> _______________________________________________
> Pulp-dev mailing list
> Pulp-dev at redhat.com <mailto:Pulp-dev at redhat.com>
> https://www.redhat.com/mailman/listinfo/pulp-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/pulp-dev/attachments/20180515/7c24cfbe/attachment.htm>
More information about the Pulp-dev
mailing list