<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Apr 10, 2018 at 6:44 PM, Jeff Ortel <span dir="ltr"><<a href="mailto:jortel@redhat.com" target="_blank">jortel@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF"><span>
<br>
<br>
<div class="m_8733354028057534058m_-4789151742247051920moz-cite-prefix">On 04/10/2018 04:15 PM, Dennis Kliban
wrote:<br>
</div>
</span><div><div class="m_8733354028057534058h5"><blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Tue, Apr 10, 2018 at 2:04 PM,
Brian Bouterse <span dir="ltr"><<a href="mailto:bbouters@redhat.com" target="_blank">bbouters@redhat.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div>These are good problem statements. I didn't
understand all of the aspects of it, so I put some
inline questions.<br>
<br>
My overall question is: are these related problems? To
share my answer to this, I believe the first two
problems are related and the third is separate. The
classic divide and conquor approach we could use here
is to confirm that the problems are unrelated and
focus on resolving one of them first.<br>
<br>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>I don't think all 3 are related problems. The
motivation for grouping all together is that a subset of
the action endpoints from problem 1 are used to create
repository versions and Problem 3 is a problem with the
repository version creation API. <br>
</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div>
<div>
<div>
<div>
<div class="gmail_extra"><br>
<div class="gmail_quote"><span>On
Mon, Apr 9, 2018 at 3:18 PM, Austin
Macdonald <span dir="ltr"><<a href="mailto:austin@redhat.com" target="_blank">austin@redhat.com</a>></span>
wrote:<br>
</span><span>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div>Folks,</div>
<div><br>
</div>
<div>Austin, Dennis, and Milan have
identified the following issues with
current Pulp3 REST API design:</div>
<div>
<ul>
<li>Action endpoints are
problematic.<br>
</li>
<ul>
<li>Example
POST@/importers/<plugin>/sync/</li>
<li>They are non-RESTful and
would make client code tightly
coupled with the server code.</li>
<li>These endpoints are
inconsistent with the other
parts of the REST API.</li>
</ul>
</ul>
</div>
</div>
</blockquote>
</span>
<div>Is self-consistency really a goal? I
think it's a placeholder for consistency
for REST since the "rest" of the API is
RESTful. After reading parts of Roy
Fielding's writeup of the definition of
REST I believe "action endpoints are not
RESTful" to be a true statement. Maybe
"Action endpoints are problematic" should
be replaced with "Action endpoints are not
RESTful" perhaps and have the
self-consistency bullet removed?<br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>+1 to "Action endpoints are not RESTful"<br>
</div>
<div>+1 to removing the self-consistency language<br>
</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div>
<div>
<div>
<div>
<div class="gmail_extra">
<div class="gmail_quote"><span>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div>
<ul>
<ul>
<li>DRF is not being used as
intended for action endpoints
so we have to implement extra
code. (against the grain)</li>
</ul>
</ul>
</div>
</div>
</blockquote>
</span>
<div>I don't know much about this. Where is
the extra code?<br>
</div>
<span>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div>
<ul>
<li>We don't have a convention for
where plug-in-specific, custom
repository version creation
endpoints.<br>
</li>
<ul>
<li>example
POST@/api/v3/<where?>/docker/a<wbr>dd/</li>
<li>needs to be discoverable
through the schema</li>
</ul>
</ul>
</div>
</div>
</blockquote>
</span>
<div>What does discoverable via the schema ^
mean? Aren't all urls listed in the
schema?<br>
<br>
</div>
<div>I think of ^ problem somewhat
differently. Yes all urls need to be
discoverable (a REST property), but isn't
it more of an issue that the urls which
produce repo versions can't be identified
distinctly from any other
plugin-contributed url? To paraphrase this
perspective: making a repo version is
strewn about throughout the API in random
places which is a bad user experience. Is
that what is motivation url discovery?<br>
</div>
<span>
<div> </div>
</span></div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>Yes. I envision a CLI that can discover new plugin
repository-version-creating functionality without having
to install new client packages. Allowing plugin writers to
add endpoints in arbitrary places for creating repository
versions will make it impossible for the client to know
what all the possible ways of creating a repository
version are. <br>
</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div>
<div>
<div>
<div>
<div class="gmail_extra">
<div class="gmail_quote"><span>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div>
<ul>
<li>For direct repository version
creation, plugins are not
involved.<br>
</li>
<ul>
<li>validation correctness
problem: <a href="https://pulp.plan.io/issues/3541" target="_blank">https://pulp.plan.io/issues/35<wbr>41</a></li>
<li>example:
POST@/api/v3/repositories/<rep<wbr>ository_id>/versions/</li>
</ul>
</ul>
</div>
</div>
</blockquote>
</span>
<div>I agree with this problem statement. In
terms of scope it affects some plugin
writers but not all.<br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>I think it affects all plugin writers. Even the File
plugin needs to provide some validation when creating a
repository version. Right now you can add a FileContent
with the same relative path as another FileContent in the
repository version. This should not be possible because
it's not a valid combination of FileContent units in the
same repository version. <br>
</div>
</div>
</div>
</div>
</blockquote>
<br></div></div>
Not necessarily. Two files with the same relative path will have
different digest (different content). The assumption that they both
cannot be in the same repository makes assumptions about how the
repository is used which I don't think is a good idea. Image two
different versions of abc.iso.<span><br>
<br></span></div></blockquote><div><br></div><div>Why is it bad to assume that a repository version is going to be published? What are the other ways to use a repository version?<br><br>A File repository version cannot be properly published if it contains 2 FileContent units that both have the same relative path. The publisher has to decide which FileContent to publish at the relative path. That decision cannot be made intelligently by the publisher. The decision on which content unit to include in the repository version rests with the user that is creating the repository version. When a user tries to create a repository version with a FileContent that has the same relative path as another FileContent that was added previously, Pulp needs to inform the user that there is a conflict (and not create the repositiory version). This validation can only be provided by the File plugin. <br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF"><span>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div>
<div>
<div>
<div>
<div class="gmail_extra">
<div class="gmail_quote">
<div> <br>
</div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>
<div dir="ltr">
<div>We would like to get feedback on
these issues being sound and worth
resolving before we resume
particular solution discussion[1].</div>
<div><br>
</div>
<div>Thanks,</div>
<div>Austin, Dennis, and Milan</div>
<div><br>
</div>
<div>[1] <a href="https://www.redhat.com/archives/pulp-dev/2018-March/msg00066.html" target="_blank">https://www.redhat.com/archive<wbr>s/pulp-dev/2018-March/msg00066<wbr>.html</a><br>
</div>
<div><br>
</div>
</div>
<br>
</span><span>______________________________<wbr>_________________<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<wbr>/listinfo/pulp-dev</a><br>
<br>
</span></blockquote>
</div>
<br>
</div>
</div>
</div>
</div>
</div>
</div>
<br>
______________________________<wbr>_________________<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<wbr>/listinfo/pulp-dev</a><br>
<br>
</blockquote>
</div>
<br>
</div>
</div>
<br>
<fieldset class="m_8733354028057534058m_-4789151742247051920mimeAttachmentHeader"></fieldset>
<br>
<pre>______________________________<wbr>_________________
Pulp-dev mailing list
<a class="m_8733354028057534058m_-4789151742247051920moz-txt-link-abbreviated" href="mailto:Pulp-dev@redhat.com" target="_blank">Pulp-dev@redhat.com</a>
<a class="m_8733354028057534058m_-4789151742247051920moz-txt-link-freetext" href="https://www.redhat.com/mailman/listinfo/pulp-dev" target="_blank">https://www.redhat.com/mailman<wbr>/listinfo/pulp-dev</a>
</pre>
</blockquote>
<br>
</span></div>
<br>______________________________<wbr>_________________<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<wbr>/listinfo/pulp-dev</a><br>
<br></blockquote></div><br></div></div>