Jump to: navigation, search

Reddwarf-quotas

Revision as of 18:48, 29 January 2013 by Annashen (talk)

The executive summary is that we need to add a per Tenant Quota feature to the Reddwarf API

As an Admin, we need an API that which allows them to set a specific Quota for a Resource (db instances, security group, etc) in the Reddwarf Context

As a Tenant of Reddwarf, we need to check the Quota during a request to create a new Resource

Current implementations include

Quota.py in Nova invoked at specific times within Nova API

Quota.py in Cinder invoked at specific time within Cinder API

Repose a Java-based proxy style service that guards Resource APIs with a Quota management system

Inputs to Reddwarf implementation

1. Is there any effort underway to come up with a framework or common (oslo) component to manage this?

1.1 If not, should Reddwarf consider taking on proposing a common solution?

2. If we implement an external service akin to Repose, we will need a shared locking mechanism as the further upstream the quota check is from the actual allocation of the resource, the more likelihood we will run into threading issues which will allow Quotas to be violated

3. If we embed it akin to Quota.py in Cinder and Nova, we will be continuing the reinvention of the wheel, however, it will likely be easier to implement a solution that guards against threading issues as it can be invoked just before the allocation of the Resource

3.1. A flavor of this approach would be to use a Decorator and apply this Decorator to functions which allocate resources. Perhaps this can be done in a way which allows other Resource Allocation APIs and share the same Decorator

4. Another option is a middle-ground approach where we use a Service Request Filter (not sure what these are called in Python but they are Servlet Filters). This seems like an option a way to apply a top level filter across all APIs in within the same context.

Your thoughts would be very much appreciated.

below is the overview of quota design:

attachment:quota overview illustration