[Pulp-dev] ContentViewset assumes that POST is needed for any content
daviddavis at redhat.com
Wed Oct 2 16:43:40 UTC 2019
On Wed, Oct 2, 2019 at 12:37 PM Brian Bouterse <bmbouter at redhat.com> wrote:
> On Wed, Oct 2, 2019 at 11:03 AM Tatiana Tereshchenko <ttereshc at redhat.com>
>> Thank you! Good idea to have an additional one.
> I agree
> I'm on the fence between ReadOnly and just Generic one without any mixins.
> I see having the ReadOnlyContentViewset as overall being slightly better
> than a Generic option for plugin writers for two reasons.
> 1) the majority of cases (if not all) will want both list and get() mixins
> so we're handling the common case with this.
> 2) In the event a plugin writer needs to not have list and/or get(), they
> could could use NamedModelViewset directly still. Is this accurate?
Per Tanya's original email it sounds like it was hard/impossible to roll a
viewset at /pulp/api/v3/content/rpm/distribution_trees/.
> Just to write it out for clarity I imagine it would be:
> ReadOnlyContentViewset(NamedModelViewset, mixins.RetrieveModelMixin,
> What do you think?
>> Any other opinions/suggestions?
>> On Wed, Oct 2, 2019 at 4:35 PM Matthias Dellweg <dellweg at atix.de> wrote:
>>> I would do a variation of 1. :
>>> Provide a ReadonlyContentViewSet with only GET mixed in and leave the
>>> 'standard' ContentViewset as is.
>>> Cheers, Matthias
>>> On Wed, 2 Oct 2019 16:16:14 +0200
>>> Tatiana Tereshchenko <ttereshc at redhat.com> wrote:
>>> > Current implementation of ContentViewset
>>> > <
>>> > includes
>>> > mixins for create (POST) and retrieve/list (GET).
>>> > In case a plugin doesn't need to support POST for a content endpoint,
>>> > a plugin writer compiles a viewset from the mixins they need, e.g.
>>> > distribution trees and custom metadata
>>> > <
>>> > (same
>>> > use case is expected for modularity endpoints)
>>> > This leads to the inconsistent REST API.
>>> > # ContentViewset is used
>>> > /pulp/api/v3/content/rpm/advisories/
>>> > # custom plugin content viewset
>>> > /pulp/api/v3/distribution_trees/rpm/distribution_trees/
>>> > Possible solutions:
>>> > 1. Make ContentViewset more generic (no mixins, or only GET ones?)
>>> > and let plugins include any mixins they need.
>>> > This option might be painful to switch to for plugin writers, because
>>> > every plugin will be affected and will need to make this change.
>>> > At the same time probably not many plugins support upload for every
>>> > content type, so in many cases the POST is broken/not used anyway.
>>> > 2. Disable POST at the plugin level in some other way.
>>> > I'm not sure if there is any native option to disable it.
>>> > Hacky way is to override `create` method which will return
>>> > appropriate HTTP error that POST is not supported.
>>> > 3. Make plugin writers manually define a proper endpoint name.
>>> > Apart from not being reliable, I'm not sure how to do it because of
>>> > how we tweak endpoint generation.
>>> > Notice the distribution trees example ^, "distribution_trees" is used
>>> > twice in the endpoint.
>>> > 4. Any other solutions? Easy ones which I missed?
>>> > Thank you,
>>> > Tanya
>> Pulp-dev mailing list
>> Pulp-dev at redhat.com
> Pulp-dev mailing list
> Pulp-dev at redhat.com
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Pulp-dev