[Pulp-dev] ContentViewset assumes that POST is needed for any content

Matthias Dellweg dellweg at atix.de
Wed Oct 2 14:29:02 UTC 2019


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
> <https://github.com/pulp/pulpcore/blob/master/pulpcore/app/viewsets/content.py#L98-L102>
> 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
> <https://github.com/pulp/pulp_rpm/blob/master/pulp_rpm/app/viewsets.py#L233-L258>
> (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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/pulp-dev/attachments/20191002/7e2f6e71/attachment.sig>


More information about the Pulp-dev mailing list