<div dir="ltr"><div>During the pulp_rpm meeting today @ttereshc identified that the on-demand content concern I brought up is not an issue because modulemd is a metadata file so it will always be downloaded and its Artifact saved regardless of the on-demand policy. So that's a non-issue. :)<br></div><div><br></div><div>@mdellweg I will think more about what you are linking to applies and how it related to what @asmacdo was saying. Thank you for sharing.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Aug 29, 2019 at 11:11 AM Matthias Dellweg <<a href="mailto:dellweg@atix.de">dellweg@atix.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I am not entirely sure, whether it is the same kind of problem, but in<br>
[0] there is an example of a stage that adds a declarative artifact in<br>
the middle of the pipeline.<br>
<br>
[0]<br>
<a href="https://github.com/pulp/pulp_deb/blob/master/pulp_deb/app/tasks/synchronizing.py#L204" rel="noreferrer" target="_blank">https://github.com/pulp/pulp_deb/blob/master/pulp_deb/app/tasks/synchronizing.py#L204</a><br>
<br>
On Thu, 29 Aug 2019 10:42:33 -0400<br>
Brian Bouterse <<a href="mailto:bmbouter@redhat.com" target="_blank">bmbouter@redhat.com</a>> wrote:<br>
<br>
> I agree Austin's suggestion of a mechanism like that sounds good. Can<br>
> a more detailed description be written in Redmine and sent to the<br>
> list? This change is in Stages API which has such broad impact that<br>
> I'd feel most comfortable if we could get to that level of detail<br>
> together somehow.<br>
> <br>
> The Stages API details I'm sure we can work out, but the concern I<br>
> keep thinking about has to do with on-demand content. An Artifact<br>
> that doesn't also have a single url to download it from couldn't have<br>
> a RemoteArtifact created for it. If we can't make a RemoteArtifact<br>
> for it, then it won't work with on-demand sync modes. To me that is<br>
> the more challenging aspect of this goal. Will this work with<br>
> on-demand content? Do others see this as an issue? What do you think?<br>
> <br>
> @ttereshc thank you for bringing this up, and @asmacdo thank you for<br>
> jumping in and suggesting.<br>
> <br>
> <br>
> On Thu, Aug 29, 2019 at 10:20 AM Tatiana Tereshchenko<br>
> <<a href="mailto:ttereshc@redhat.com" target="_blank">ttereshc@redhat.com</a>> wrote:<br>
> <br>
> > Austin, thank you.<br>
> > Your option is more explicit, so it's probably better.<br>
> ><br>
> > Tanya<br>
> ><br>
> > On Wed, Aug 28, 2019 at 6:38 PM Austin Macdonald<br>
> > <<a href="mailto:amacdona@redhat.com" target="_blank">amacdona@redhat.com</a>> wrote:<br>
> >  <br>
> >><br>
> >><br>
> >> On Wed, Aug 28, 2019 at 11:34 AM Tatiana Tereshchenko <  <br>
> >> <a href="mailto:ttereshc@redhat.com" target="_blank">ttereshc@redhat.com</a>> wrote:  <br>
> >>  <br>
> >>> Bump.<br>
> >>><br>
> >>> Please provide feedback if you have any.<br>
> >>> I'll start working on the PR to make the suggested change this<br>
> >>> week otherwise.<br>
> >>><br>
> >>> Thank you,<br>
> >>> Tanya<br>
> >>><br>
> >>> On Mon, Aug 26, 2019 at 12:46 PM Tatiana Tereshchenko <  <br>
> >>> <a href="mailto:ttereshc@redhat.com" target="_blank">ttereshc@redhat.com</a>> wrote:  <br>
> >>>  <br>
> >>>> In RPM plugin we have Modulemd content. It comes from metadata<br>
> >>>> as one file and we parse it and then save each modulemd as a<br>
> >>>> separate file/artifact.<br>
> >>>><br>
> >>>> The question is how to handle this content in the sync pipeline.<br>
> >>>> Modulemd content is artifactless on a remote source (metadata)<br>
> >>>> but it's not artifactless in Pulp, so it can't follow a standard<br>
> >>>> path - it needs an artifact but doesn't have any remote source<br>
> >>>> to download it from.<br>
> >>>><br>
> >>>> The suggestion: find a way to skip ArtifactDownloader and<br>
> >>>> RemoteArtifactSaver stages.<br>
> >>>> The content and its artifact still need to go through all the<br>
> >>>> stages, except the ones which deal with artifact's url in some<br>
> >>>> way - download artifact (ArtifactDownloader stage) and or create<br>
> >>>> a RemoteArtifact for downloading later (RemoteArtifactSaver<br>
> >>>> stage).<br>
> >>>><br>
> >>>> The straightforward way is just to check if DeclarativeArtifact<br>
> >>>> has url (or check some special value) and skip the stage<br>
> >>>> otherwise. Any concerns about this approach (apart form being<br>
> >>>> somewhat hacky)? <br>
> >>>  <br>
> >>>> Any other solutions to the problem?<br>
> >>>>  <br>
> >>>  <br>
> >> That solution seems fine to me. I'll toss out another idea just to<br>
> >> have options.<br>
> >><br>
> >> New bool on Declarative Artifact. Similar to deferred downloads,<br>
> >> certain stages are no-ops if DeclarativeArtifact.deferred_download<br>
> >> is True.<br>
> >><br>
> >> <a href="https://github.com/pulp/pulpcore-plugin/blob/master/pulpcore/plugin/stages/artifact_stages.py#L152" rel="noreferrer" target="_blank">https://github.com/pulp/pulpcore-plugin/blob/master/pulpcore/plugin/stages/artifact_stages.py#L152</a><br>
> >><br>
> >> <a href="https://github.com/pulp/pulpcore-plugin/blob/master/pulpcore/plugin/stages/models.py#L29" rel="noreferrer" target="_blank">https://github.com/pulp/pulpcore-plugin/blob/master/pulpcore/plugin/stages/models.py#L29</a><br>
> >><br>
> >><br>
> >>  <br>
> >>> Thank you,  <br>
> >>>> Tanya<br>
> >>>><br>
> >>>> P.S. FWIW, Reasons to store modulemd as a file are:<br>
> >>>> - the format is not very stable and new information can be added<br>
> >>>> - it can be large<br>
> >>>> - we don't need all the info in the DB, we use only small subset<br>
> >>>> of fields (to search by or for copy operations)<br>
> >>>>  <br>
> >>> _______________________________________________<br>
> >>> Pulp-dev mailing list<br>
> >>> <a href="mailto:Pulp-dev@redhat.com" target="_blank">Pulp-dev@redhat.com</a><br>
> >>> <a href="https://www.redhat.com/mailman/listinfo/pulp-dev" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/pulp-dev</a><br>
> >>>  <br>
> >> _______________________________________________  <br>
> > Pulp-dev mailing list<br>
> > <a href="mailto:Pulp-dev@redhat.com" target="_blank">Pulp-dev@redhat.com</a><br>
> > <a href="https://www.redhat.com/mailman/listinfo/pulp-dev" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/pulp-dev</a><br>
_______________________________________________<br>
Pulp-dev mailing list<br>
<a href="mailto:Pulp-dev@redhat.com" target="_blank">Pulp-dev@redhat.com</a><br>
<a href="https://www.redhat.com/mailman/listinfo/pulp-dev" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/pulp-dev</a><br>
</blockquote></div>