[openstack-dev] [cross-project] [all] Quotas -- service vs. library

Nikhil Komawar nik.komawar at gmail.com
Fri Mar 25 00:17:05 UTC 2016


Thanks for your feedback Erno. I've answered your question inline.

On 3/17/16 2:21 AM, Erno Kuvaja wrote:
> On Wed, Mar 16, 2016 at 6:25 AM, Nikhil Komawar <nik.komawar at gmail.com
> <mailto:nik.komawar at gmail.com>> wrote:
>
>     Hello everyone,
>
>
>
>     tl;dr;
>
>     I'm writing to request some feedback on whether the cross project
>     Quotas
>
>     work should move ahead as a service or a library or going to a far
>
>     extent I'd ask should this even be in a common repository, would
>
>     projects prefer to implement everything from scratch in-tree?
>     Should we
>
>     limit it to a guideline spec?
>
>
>
>     But before I ask anymore, I want to specifically thank Doug Hellmann,
>
>     Joshua Harlow, Davanum Srinivas, Sean Dague, Sean McGinnis and  Andrew
>
>     Laski for the early feedback that has helped provide some good
>     shape to
>
>     the already discussions.
>
>
>
>     Some more context on what the happenings:
>
>     We've this in progress spec [1] up for providing context and platform
>
>     for such discussions. I will rephrase it to say that we plan to
>
>     introduce a new 'entity' in the Openstack realm that may be a
>     library or
>
>     a service. Both concepts have trade-offs and the WG wanted to get more
>
>     ideas around such trade-offs from the larger community.
>
>
> Would you mind to expand this "we" here?
>  

Quota WG (
http://eavesdrop.openstack.org/#Cross-project_Quotas_and_Nested_Quotas_Working_Group_Virtual_Standup
)

>
>     Service:
>
>     This would entail creating a new project and will introduce managing
>
>     tables for quotas for all the projects that will use this service. For
>
>     example if Nova, Glance, and Cinder decide to use it, this
>     'entity' will
>
>     be responsible for handling the enforcement, management and DB
>     upgrades
>
>     of the quotas logic for all resources for all three projects. This
>     means
>
>     less pain for projects during the implementation and maintenance
>     phase,
>
>     holistic view of the cloud and almost a guarantee of best practices
>
>     followed (no clutter or guessing around what different projects are
>
>     doing). However, it results into a big dependency; all projects
>     rely on
>
>     this one service for right enforcement, avoiding races (if do not
>
>     incline on implementing some of that in-tree) and DB
>
>     migrations/upgrades. It will be at the core of the cloud and prone to
>
>     attack vectors, bugs and margin of error.
>
>
> I'd prefer not. As lots of concern raised already ref. latency, extra
> api etc.
> Based on the unifying the user interface, common api might be desired
> option, but it's own service, not so much.
>  
>
>
>     Library:
>
>     A library could be thought of in two different ways:
>
>     1) Something that does not deal with backed DB models, provides a
>
>     generic enforcement and management engine. To think ahead a little bit
>
>     it may be a ABC or even a few standard implementation vectors that can
>
>     be imported into a project space. The project will have it's own
>     API for
>
>     quotas and the drivers will enforce different types of logic; per se
>
>     flat quota driver or hierarchical quota driver with custom/project
>
>     specific logic in project tree. Project maintains it's own DB and
>
>     upgrades thereof.
>
>
> Partially decent idea, just the fact annoys me that this is climbing
> the tree
> arse ahead. The individual API's is perhaps the worst option with common
> code for the quotas as each project has their own requirements where the
> API might be generalized.
>
>
>     2) A library that has models for DB tables that the project can import
>
>     from. Thus the individual projects will have a handy outline of
>     what the
>
>     tables should look like, implicitly considering the right table
>     values,
>
>     arguments, etc. Project has it's own API and implements drivers
>     in-tree
>
>     by importing this semi-defined structure. Project maintains it's own
>
>     upgrades but will be somewhat influenced by the common repo.
>
>
> This is really not benefitting anyone. Again each project has their own
> requirements for quotas, while the user experience is the one thing we
> should try to unify. I have really difficulties to see Zaqar, Nova and
> Glance
> fitting into the single quota model, while the API interacting with
> those could
> be similar.
>
>
>     Library would keep things simple for the common repository and
>     sourcing
>
>     of code can be done asynchronously as per project plans and priorities
>
>     without having a strong dependency. On the other hand, there is a
>
>     likelihood of re-implementing similar patterns in different projects
>
>     with individual projects taking responsibility to keep things up to
>
>     date. Attack vectors, bugs and margin of error are project
>     responsibilities
>
>
> This is the problem I see with oslo approach currently. Originally
> intended for
> place to collect the common code from projects turning to "enforcing"
> entity
> of code some people thinks should be common and does not fit most.
>  
>
>
>     Third option is to avoid all of this and simply give guidelines, best
>
>     practices, right packages to each projects to implement quotas
>     in-house.
>
>     Somewhat undesirable at this point, I'd say. But we're all ears!
>
>
> This is probably the best solution without "best practices", again one
> model
> does not suite all, but common concepts, specially on the interacting API
> side is desired. _If_ proven that most of the projects would fit to
> the same
> suite, common lib could be built out of the outcome.
>
>
>
>
>     Thank you for reading and I anticipate more feedback.
>
>
>
>     [1] https://review.openstack.org/#/c/284454/
>
>
>
>     --
>
>
>
>     Thanks,
>
>     Nikhil
>
>
>
> I'd really like to see a project implementing quotas well, interacted
> via API
> agreed on the API Working Group (not too specific so it can be adopted for
> majority of use cases) and proved taking the corner cases into
> account. Like
> starting with fixing the Cinder quotas in the first place (not
> pointing fingers but
> looking for proof of success) and showing that the initiative has basis of
> accountability.
>
> Best,
> Erno
>
>
>
>
>     __________________________________________________________________________
>
>     OpenStack Development Mailing List (not for usage questions)
>
>     Unsubscribe:
>     OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>     <http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe>
>
>     http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
>
>
>
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>


-- 

Thanks,
Nikhil





More information about the OpenStack-dev mailing list