-
Notifications
You must be signed in to change notification settings - Fork 206
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
spec: Remove catalog from spec. #45
Conversation
spec.md
Outdated
|
||
For details of the `Link` header, please see the [_Pagination_](#pagination) section. | ||
|
||
#### Pagination |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
there's more detail in the catalog pagination section than in the pagination for tag results.. instead the tag pagination refers to this section.. so maybe filter through and see what can move down to the tags pagination section...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It looks like at least last
and Link
referred to this section from there
Alright, I'll take a look at it tomorrow. |
Did we vote on this yesterday? I think Stephen wanted to keep it in the spec as optional, but I honestly think that just not having it in OCI 1.0 is equivalent since most registries will still support it for backwards compatibility with v2.2. |
catalog should probably remain as optional, till it's been replaced |
On 31/01/19 11:32 -0800, Jimmy Zelinskie wrote:
Did we vote on this yesterday? I think Stephen wanted to keep it in the spec as optional, but I honestly think that just not having it in OCI 1.0 is equivalent since most registries will still support it for backwards compatibility with v2.2.
I don't see a point in keeping it at all
|
From: #22 (comment)
I like what Derek proposed. I think being able to iterate over the contents is a fundamental operation. Simply removing catalog... without replacement, essentially removes our ability to iterate. I'd hate for that to be a limitation of the final 1.0, but agree we don't need cat or it's replacement for the first alpha just a TODO should suffice, maybe with an open issue tagged for v1.0? Just my opinion :-) Probably brought about by having to deal with a large list of said stuff. |
I think if we don't want people to rely on catalog, we should remove it from the spec. Removing it from the spec won't make registries that currently support it suddenly stop, and I certainly don't want anyone else to implement it. It seems that we all agree it's bad and needs to be replaced by something else. Both I would like to see some progress on a proposal for replacements to these things, but IMO both are out of scope for the distribution spec. If we want extensions for discovery and content management, we can do that separately. Catalog (or something like it) is explicitly out of scope, per the proposal:
|
A solid compromise would be to keep |
In order to make catalog usable in the future, I think are gonna have to have a long talk about how to logically group a collection of repositories into a spec-defined namespace. This will for sure be a breaking change so I don't forsee us being able to have a functional catalog endpoint until we release a V2. My 2 cents. |
Listing (and/or management) of repository names "is explicitly out of scope." I want a recount on that original decision... throws up hands... :-) |
@atlaskerr if you can just refactor the pagination text.. I think you'll have support for merging the PR. Cheers, Mike |
My rebase messed up my branch and Github automatically closed it. Oops. I'll bring it back up when I fix the issue! |
This commit removes all references to the deprecated `_catalog` endpoint. Pagination specific documentation has been merged into the pagination section for listing tags. Signed-off-by: Atlas Kerr <atlaskerr@gmail.com>
This PR is ready for review. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See comment.
Images are stored in collections, known as a _repository_, which is keyed by a `name`, as seen throughout the API specification. | ||
A registry instance MAY contain several repositories. | ||
The list of available repositories is made available through the _catalog_. | ||
### Listing Image Tags |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
?? I think you wanted to pick up the interesting description of how pagination works and merge that down into the pagination description in image tags. Not move some portions of the description of image tags into the description of listing repositories. See references to repositories in the pagination examples below.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not opposed to this, but I would only approve contingent that we have a workgroup for unified listing API
|
||
```HTTP | ||
GET /v2/_catalog?n=<integer> | ||
GET /v2/<name>/tags/list?n=<integer> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
wait, is this new?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
oh no, just consolidating examples ..
+1 on removal. Do we need a "reserved" endpoint function though to ensure this endpoint does not get redefined as something else in the future? I don't foresee it being reused but we should prevent collision through redefinition and ensure that repositories starting with |
We do need to reserve this. If a registry wants to implement _catalog, then go forth. BTW, we also need to deprecate |
ok y'all, I've been hearing churning from several sources that while the |
It would be good to understand who’s dependent upon this and how it would carry forward. Although ACR implements it, I’m still an advocate for replacing. Removing it from the spec doesn’t preclude some distribution implementations from keeping their apis. ACR would likely keep it until we complete the new API. We’d then start a deprecation process. |
In my view, the plan for transition from Docker distribution to OCI distribution should be the same as the plan for transition from Docker images to OCI images -- the absolute minimum number of changes should be made that would require clients to be rewritten (in fairness, OCI images changed a lot but all of the change is metadata-level and to allow extensibility in the format). This will allow us to have an OCI project (even though it might be imperfect) that users can easily switch to. After that, we can go through normal spec change iteration and have a Removal of |
Only for some definition of "depended on". Programs like Spinnaker and Twistlock use The problem of integration with tools that want to index a registry efficiently needs to be solved at post-Distribution v1.
My argument is that because it is broken and people are mistakenly using it, the spec should have it as either optional or drop it under the assumption that every popular registry already implements Docker v2-2 in the meantime while a real solution can be created. Regardless of the spec, the popular registries are going to be stuck supporting this broken endpoint for a while. |
i agree we want to make it easy for people to move to OCI. From what i understand, _catalog isn’t implemented by many existing distributions. There’s no client API in docker.exe or other common tooling that i'm aware of. |
On the scanner comment from Jimmy; this is true. And while we want to standardize for scanners and other more generic tooling, each scanner company has already had to deal with each clouds unique implementation, including different apis altogether. Removing the catalog API just frees up the mental model to construct something that each of us can implement consistently, reducing the churn on the scanners and other tooling. |
According to tweets I've seen from people at DockerCon, there is now a There's still a strong argument to remove it, but I just wanted to flag this in case people weren't aware. |
It looks like |
it’s also a plug-in as part of Docker Enterprise 3. |
What do you mean? It's not in the normal Docker CLI? Or it doesn't work against the regular docker distribution registry? |
Apparently it’s only in Docker EE and only works with DTR, because the catalog and listing apis are so inconsistently implemented. ;). I’ve asked the docker folks to join us in helping define a new api we can all support these common scenarios: https://hackmd.io/s/BJPAUxDvV#OCI-Catalog-Listing-API---Workgroup |
This seems stalled and perhaps we should put it to a vote of whether to include the catalog in 1.0 or not. I believe the maintainers are in agreement that we will not be adding any new endpoints for 1.0 for this functionality but wait for 1.1. I am still +1 for dropping in 1.0. The |
While at KubeCon, several of us got together to discuss in person: SummaryAs docker recently announced a new search api, implemented in DTR and Docker EE, because the |
I put up a vote count in the comment. Let's get full approval then we can ask that this be rebased. |
/SGTM to remove the api.. and reserve it. |
@mikebrow sounds good, if everyone agrees we can carry this PR or make sure that gets included before merging |
we came to a conclusion on the call today that removes and reserves catalog API, as even currently all the registries that implement a catalog endpoint all do it differently. A complaint registry does not need to implement this endpoint, but registries that have already implemented such can keep it. There is no expected behavior for this endpoint |
This PR removes all references to the catalog endpoint from the distribution spec.
Maintainer approval