What was the outcome of this discussion?

-- bk

On 05/26/2017 04:48 PM, David Davis wrote:
I agree on the ones that make the most sense to you as they seem to be the most consistent. This to me seems inconsistent:

.../foo/importers/<importer_natural_key>/sync
.../foo/latest/publishers/<publisher_natural_key>/publish

So +1 to the routes with explicit “/versions/” in the url.


David

On Fri, May 26, 2017 at 3:48 PM, Brian Bouterse <bbout...@redhat.com <mailto:bbout...@redhat.com>> wrote:

    After some in-person convo, @mhrivnak and I agree the most
    productive next step is for us to look at the API planning. We will
    continue with the regularly scheduled use calls starting on Tuesday
    with the agenda 'status, alternate content sources, and revisiting
    the JWT use cases based on discussion from [0].

    We also need to understand what the API looks like with versioned
    repos fully implemented. We also need to understand what an API
    looks like that allows us to launch the MVP without versioned repos
    and add them in later without creating a backwards compatibility
    issue. This is also heavily related to the nested views of DRF and
    the use of natural keys which are topics others are more familiar
    with than I.

    Here are some API options @mhrivnak and I talked about. Let .../foo/
    be the API path to the repository named foo. I'm assuming nested URLs.

    # Sync
    The sync trigger never deals with versioned repos because it creates
    versions and doesn't refer to them.

    .../foo/importers/<importer_natural_key>/sync

    # Publish options

    .../foo/publishers/<publisher_natural_key>/publish        <---- no
    version specifies assumes latest. When versioned repos we can add a
    POST param version=xxxx to adding this during 3.1+

    .../foo/latest/publishers/<publisher_natural_key>/publish      <----
    launching without versioned repos would cause 'latest' to be the
    only value that wouldn't 404. When version repos are added, latest
    would be the natural key of the repo version (probably it's number).

.../foo/versions/latest/publishers/<publisher_natural_key>/publish <---- same as above only with the version repo being more of a
    first-class resource.

    # Listing Content options

    .../foo/content/      <---- implicitly assumes the latest.
    .../foo/versions/content/    <---- implicitly assumes the latest.
    .../foo/versions/latest/content/   <---- explicitly latest.
    Launching without versioned repos would cause 'latest' to be the
    only value that wouldn't 404.

    # Of all the ^, these make the most sense to me:

    .../foo/importers/<importer_natural_key>/sync
.../foo/versions/<version_natural_key>/publishers/<publisher_natural_key>/publish <---- hard code <version_natural_key> to be 'latest' for MVP and
    have no internal implementation of versioned repos
    .../foo/versions/<version_natural_key>/content/      <---- hard code
    <version_natural_key> to be 'latest' for MVP and have no internal
    implementation of versioned repos

    Please send thoughts and idea on the API.

    [0]: https://pulp.plan.io/issues/2359 <https://pulp.plan.io/issues/2359>

    -Brian



    On Fri, May 26, 2017 at 11:58 AM, Michael Hrivnak
    <mhriv...@redhat.com <mailto:mhriv...@redhat.com>> wrote:


        On Fri, May 26, 2017 at 10:31 AM, Brian Bouterse
        <bbout...@redhat.com <mailto:bbout...@redhat.com>> wrote:

            +1 to determining the REST API because we have to get that
            right due to semver.

            @ipanova we want the same things, but I'm not sure how to
            get there. You are considering including all versioned repo
            functionality in the MVP. I like that idea lot better than
            internally modelling it but not giving the users the
            features. I really want versioned repos. In terms of how we
            get there though, there are challenges in doing all of this
            for the MVP (see below).

            @all, If we want to make decisions now on the data model,
            that is easier said than done. If I thought we could easily
            agree on the data model, I would think that path is more
            viable. There was a very long IRC conversation a few days
            ago where an alternate data model was discussed and concerns
            were raised with the prototype's data model in terms of
            complexity. That led into a separate yet an equally long IRC
            convo about the delete use cases of versioned repos. We can
            work through those discussions, and in time we will, but it
            will take time. We also need to involve the users, which
            will take time too.


        Perhaps we should dig into the modeling options more. To me, it
        is clear that the simpler model, which has been considered and
        discussed in the past, is not viable because of the incredibly
        high number of relationships it would produce. The model I
        proposed is slightly more complex, but still easily understood
        and reasoned about. It's been vetted many times by the team both
        as a group and as individuals, so I don't think there's any
        particular risk with it. The PoC even includes correctness tests
        of all the behaviors I could think of.

        I appreciate all ideas and alternatives. We should compare and
        contrast all potential options. But I don't think this one
        suddenly needs to be a wrench in the gears.

        Does anyone have a preference on how to move this discussion
        forward? New email thread? Live meeting?

        I am admittedly coming at this with the bias of someone who has
        been thinking about and working on this problem for a long time.
        But that also gives me the confidence to know that we are very
        close to being able to move forward with implementation. I think
        we just need:

        - Final agreement on the model. I think we're not far from this.
        - Define basic use cases. Is there more to do here? I think this
        is well in-hand.
        - Make REST API decisions. This is more a matter of deciding on
        certain general approaches we will take with specific REST API
        challenges, such as how to make an endpoint that acts on
        multiple resources. There's not much specific to repo versions.
        It just happens to be the first such example we're discussing as
        a wide group.


            Pulp2 never had these features that Pulp3 can launch without
            them. I really want versioned repos, but not at the expense
            of a longer Pulp3 release timeline. I can't stress enough
            how getting Pulp3 out needs to be our focus and versioned
            repos (aside from the API decisions) are unnecessarily
            extending the release timeline. I think we need to turn our
            focus to the plugin conversion work.


        The main reason I think this is important for 3.0 is that if it
        doesn't land there, it may not be viable until 4.0.

        And I really don't think this has to impact our timeline. It may
        actually be more work for 3.0 to have a REST API that's
        compatible with a data model we don't have in-place, using
        predictions of what it's likely to be, rather than just using
        the real models, serializers and views up-front. You all know
        how committed I am to deferring anything we can to 3.1+. But I
        see this one as very important to getting Pulp 3's foundation right.

        I do see this behavior as a huge advantage for Pulp and critical
        to the kinds of workflows we need to advocate and facilitate. If
        there's one critique we hear over and over, it's that promotions
        and small changes should be crazy fast. This is the path to
        making that a reality.

--
        Michael Hrivnak

        Principal Software Engineer, RHCE

        Red Hat



    _______________________________________________
    Pulp-dev mailing list
    Pulp-dev@redhat.com <mailto:Pulp-dev@redhat.com>
    https://www.redhat.com/mailman/listinfo/pulp-dev
    <https://www.redhat.com/mailman/listinfo/pulp-dev>




_______________________________________________
Pulp-dev mailing list
Pulp-dev@redhat.com
https://www.redhat.com/mailman/listinfo/pulp-dev


_______________________________________________
Pulp-dev mailing list
Pulp-dev@redhat.com
https://www.redhat.com/mailman/listinfo/pulp-dev

Reply via email to