<div dir="ltr"><div>Mihai, David, It sounds like the CLI client runs entirely off of the server side definition. That sounds really great because the CLI installs with exactly 1 package and is always aware of the capabilities of the server.<br><br>Since we are using Django Rest Framework for Pulp3, we can have the server produce openapi or coreapi descriptions of our API automatically so the CLI could just use that. I wonder if there is a coreapi or openapi CLI tooling that is Python based. Anyways, here are the related docs for DRF [0].<br><br></div><div>Maybe someone wants to create a wiki page with these ideas?<br></div><div><br>[0]: <a href="http://www.django-rest-framework.org/topics/api-clients/">http://www.django-rest-framework.org/topics/api-clients/</a><br><br></div>-Brian<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Mar 3, 2017 at 4:09 PM, David Davis <span dir="ltr"><<a href="mailto:daviddavis@redhat.com" target="_blank">daviddavis@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">This is essentially what foreman and katello do, and it works great. They get an json export of the REST API structure from the server and then map each endpoint to a command and the parameters to options. One can still override the default functionality for each command (or add extra commands) but for most commands, there isn't any code required.</div><div class="gmail_extra"><span class="HOEnZb"><font color="#888888"><br clear="all"><div><div class="m_4206473246624268339gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><br></div><div>David<br></div></div></div></div></div></div></div></div></font></span><div><div class="h5">
<br><div class="gmail_quote">On Fri, Mar 3, 2017 at 2:50 PM, Mihai Ibanescu <span dir="ltr"><<a href="mailto:mihai.ibanescu@gmail.com" target="_blank">mihai.ibanescu@gmail.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">I am throwing this out there as a proposal, not necessarily to make it on the MVP list, only for people to tell me to take a hike. I like hikes!<div><br></div><div>There is an incredible amount of boilerplate in setting up a pulp plugin. I would like to see this decrease as much as possible.</div><div><br></div><div>For this iteration, I would like to bring up the admin client.</div><div><br></div><div>Maybe I don't see the full picture, but it seems theoretically possible for the pulp admin client to function at a minimal level without having an admin extension installed. In my limited experience, it seemed like a lot of the information we put in an admin extension can be queried from the server.</div><div><br></div><div>So my proposal would be: come up with a primitive set of operations that are provided by the admin client for all plugin types and all their implemented units.</div><div><br></div><div>The operations could be:</div><div>* Repository level: create, delete, enumerate/search; add distributors, edit importer configuration etc.</div><div>* Content level: query, upload, delete, copy</div><div>* Others I can't think of right now</div><div><br></div><div>Those operations could be extended if the plugin supports a unique operation.</div><div><br></div><div>Why am I bringing this up? Because the REST API was mentioned, and said API may have to be extended with additional information to enable the baselevel functionality of the admin client to work.</div><div><br></div><div>/me preemptively goes for a hike</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="m_4206473246624268339h5">On Fri, Mar 3, 2017 at 10:47 AM, Brian Bouterse <span dir="ltr"><<a href="mailto:bbouters@redhat.com" target="_blank">bbouters@redhat.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="m_4206473246624268339h5"><div dir="ltr"><div><div>I received positive feedback from the MVP 'Authentication' refinement call this past Tuesday. We produced this revised section [0]. We also produced a "3.1+ post MVP ideas list" here [1].<br><br>We plan to go through each section of the MVP, but I want to schedule the four most time sensitive first. Time sensitive here means: "things we need nailed down based on the order we will develop them in".<br><br>Please identify the four most time sensitive areas in this doodle poll [2] by 10PM UTC on Monday March 6.<br><br>[0]: <a href="https://pulp.plan.io/projects/pulp/wiki/Pulp_3_Minimum_Viable_Product#Authentication" target="_blank">https://pulp.plan.io/projects/<wbr>pulp/wiki/Pulp_3_Minimum_Viabl<wbr>e_Product#Authentication</a><br>[1]: <a href="https://pulp.plan.io/projects/pulp/wiki/31+_Ideas_(post_MVP)" target="_blank">https://pulp.plan.io/projects/<wbr>pulp/wiki/31+_Ideas_(post_MVP)</a><br>[2]: <a href="http://doodle.com/poll/7v2kzi7p6gruzvdv" target="_blank">http://doodle.com/poll/7v2kzi7<wbr>p6gruzvdv</a><br><br></div>Thanks!<span class="m_4206473246624268339m_-872191008902436977HOEnZb"><font color="#888888"><br></font></span></div><span class="m_4206473246624268339m_-872191008902436977HOEnZb"><font color="#888888">Brian<br></font></span></div>
<br></div></div>______________________________<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>
<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></div>
</blockquote></div><br></div>