[Pulp-dev] Proposal and feedback request: un-nest urls
Austin Macdonald
amacdona at redhat.com
Tue Dec 5 18:54:40 UTC 2017
I didn't get any pushback from the POC PR, so I am moving forward with the
assumption that we have reached consensus. Please let me know soon if you
have any concerns.
I cleaned up a few things and created a new PR, which is waiting on review.
https://github.com/pulp/pulp/pull/3237
On Thu, Nov 30, 2017 at 10:49 PM, Austin Macdonald <amacdona at redhat.com>
wrote:
> I have a first-draft of the POC https://github.com/pulp/pulp/pull/3232
>
> On Thu, Nov 30, 2017 at 6:23 PM, Jeremy Audet <jaudet at redhat.com> wrote:
>
>> For deletes, the db relationships are all there, so I expect deletes to
>>>> cascade to other objects with any url
>>>> structure. I believe closer to the release, we'll have to look at the
>>>> cascading delete relationships to see if
>>>> the behaviors that we have are correct.
>>>>
>>>> Overall, I'm +1 on un-nesting. I think it would result in a good user
>>>> experience. I know it goes against the
>>>> logical composition arguments, which have been well laid out. We want
>>>> Pulp to be really simple, and the nested
>>>> URL in the top of this thread is anything but simple. Consider another
>>>> project like Ansible Galaxy (who also
>>>> uses Django and DRF). Their API is very flat and as an outsider I find
>>>> it very approachable:
>>>> https://galaxy.ansible.com/api/v1/ Pulp could be that simple.
>>>>
>>>
>>> Clicking through the Galaxy API, there seems to be a good bit of nesting.
>>
>>
>> There is. Let me be explicit. Here's some of the available URLs:
>>
>> - /api/v1/notifications/
>> - /api/v1/notifications/120165/imports/
>> - /api/v1/imports/
>> - /api/v1/imports/166952/notifications/
>>
>> A simple call to the repository gives hrefs for importers and publishers,
> so I think we are covered.
> Example from POC:
>
> GET /api/v3/repositories/a6287821-5d13-4a59-8a34-a7ea98bcc40d/
>
>
> Response:
> {
> "_href": "http://pulp3.dev:8000/api/v3/repositories/a6287821-5d13-
> 4a59-8a34-a7ea98bcc40d/",
> "name": "test",
> "description": "",
> "notes": {},
> "last_content_added": null,
> "last_content_removed": null,
> "importers": [
> "http://pulp3.dev:8000/api/v3/importers/file/testi/"
> <--------------------<
> ],
> "publishers": [
> "http://pulp3.dev:8000/api/v3/publishers/file/testp/",
> <----------------------<
> "http://pulp3.dev:8000/api/v3/publishers/file/sdfdsffd/"
> ],
> "content": "http://pulp3.dev:8000/api/v3/repositories/a6287821-5d13-
> 4a59-8a34-a7ea98bcc40d/content/",
> "content_summary": {}
> }
>
> It seems a little redundant, but we could also add "detail routes" to the
> repository (and/or importers/publishers) that would add these endpoints.
> (We would need to decide if we cast() or if we add <type> to the endpoint.)
>
> v3/repositories/<id>/importers/
> v3/repositories/<id>/publishers/
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/pulp-dev/attachments/20171205/638659a8/attachment.htm>
More information about the Pulp-dev
mailing list