Currently, Nova tracks absolute limits via a quota system: command-line parameters or configuration set up default quotas, which can then be overridden by the contents of the "quotas" table in the database, for specific projects. However, many users of Nova use a class system: one customer may have chosen an "Economy" package which gives them one level of quotas, while another customer may have chosen a "Premium" package with significantly higher quotas. Moreover, even these Nova users may want to be able to override specific quotas for a given customer rather than rely exclusively on which package they have selected.
This proposal is for the creation of a new "quota class" system. A "quota_classes" table would be added to the database, containing the same fields as the "quotas" table, but with the substitution of a quota class name for the project ID. Additionally, a "quota_class" concept would be added to projects and made available by the RequestContext; it could be set by the authentication middleware. It would be optional; if not set by something, the existing behavior would be preserved. However, if it was set, the quota defaults would be developed from entries in the database. There would also be an extension, similar to the existing quotas extension, to allow quota classes to be configured.