Use case/features ------------------------------------------------------------- View/search image content (file and application level) View image similarities Compare images Compound image support (something like http://docs.docker.io/en/latest/terms/layer/ ) Image de-duplication Move images across repositories (delta) Version control Convert Image format (it's landing via async-task mechanism)
They are all the functional things we need to do, where do functional-operations-oriented features fit in the API? (And I believe image-deactivate case is fit this topic as well btw)
The challenge for fitting them into Glance current API model is that the API (and domain model probably IMO) is not robust and direct enough for some of those functions, since RESTful interface style makes now API model is very CRUD-centric.
Questions: 1. Are they fit into current RESTful CRUD-centric API? What need to change on the API model to make them fit? Any challenge of making it make sense with the existing API model?
2. Do we need to adding extension mechanism to Glance? Does an API level extension is enough for us? or whole-stack one (API+domain+DB)? Gain: - Preventing change main resource model on domain and DB level for ever functional features, e.g. Image, Membership, Tag, Task and etc.. Feature image-deactivate is this case. - Preserving support for the existing API. Just needs some minor changes. - Easily to make other people put whatever they want in an extension. (of cause we need to review it before merging) Loss: - Extension is a dumping ground for *every* type of operation, so the it can be all over the place in terms of style. But *seems* we don't need a lower barrier to entry against people think of extensions as being a lower barrier to entry than regular API stuff in the past.
BTW, I'd like to discuss above features in a dedicated talk with you.