Merge "Add spec for share_groups quota resource"
This commit is contained in:
commit
4771aa4f76
|
@ -0,0 +1,173 @@
|
||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License.
|
||||||
|
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
======================
|
||||||
|
Add share_groups quota
|
||||||
|
======================
|
||||||
|
|
||||||
|
https://blueprints.launchpad.net/manila/+spec/add-share-groups-quota
|
||||||
|
|
||||||
|
Manila is able to create several different kinds of resources, which use
|
||||||
|
real back-end resources. Since real resources are always finite, it is
|
||||||
|
practical to have different kinds of limits/quotas for them.
|
||||||
|
And one of not covered resources by limits is amount of share groups that
|
||||||
|
user is able to create. Share Groups were added in Ocata timeframe and
|
||||||
|
were, originally, consistency-groups in older than Ocata releases.
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
The problem is in possibility to schedule creation of unlimited amount of
|
||||||
|
share groups, that can lead to 2 bad things:
|
||||||
|
|
||||||
|
* garbaging of DB with any amount of DB table records;
|
||||||
|
* waste of real back-end resources.
|
||||||
|
|
||||||
|
So, implementation of quotas for share_group resource will solve above
|
||||||
|
mentioned problems.
|
||||||
|
|
||||||
|
Use Cases
|
||||||
|
=========
|
||||||
|
|
||||||
|
Control of used manila resources will now be more flexible, because admin
|
||||||
|
will be able to set additional quotas for previously untracked manila resource.
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
Implement new quota resource called "share_groups" in existing quota mechanism.
|
||||||
|
This quota will track amount of created share groups resources and restrict
|
||||||
|
creation of them after limits are exceeded.
|
||||||
|
Make default value be equal to amount of shares.
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
Do not implement quotas for share groups. In this case any user will be able
|
||||||
|
to create unlimited amount of share groups.
|
||||||
|
|
||||||
|
Data model impact
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Existing DB schema does not require any changes. Hence, no new DB migrations
|
||||||
|
are required. We will reuse existing logic, where we can track any amount of
|
||||||
|
resources by their names.
|
||||||
|
|
||||||
|
REST API impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Only one (1) API will be changed, it is "quota-update". It will be able to
|
||||||
|
handle one more key provided in POST data, called "share_groups".
|
||||||
|
Also, "quota-show" command will return dict with quota resources [and usages]
|
||||||
|
for this key too. Both these changes require bump of microversion and will be
|
||||||
|
available only with this or later one microverisons.
|
||||||
|
If for moment of this spec implementation share-groups feature
|
||||||
|
stays 'experimental', then these API changes should be available only if
|
||||||
|
'X-OpenStack-Manila-API-Experimental' header provided and set to 'true'
|
||||||
|
boolean value.
|
||||||
|
|
||||||
|
* Update quotas
|
||||||
|
|
||||||
|
* URL: /quota-sets
|
||||||
|
* Method: PUT
|
||||||
|
* JSON body:
|
||||||
|
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
{
|
||||||
|
'quotas': {
|
||||||
|
'share_groups': 100,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Driver impact
|
||||||
|
-------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Security impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Notifications impact
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Other end user impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Users will now be restricted in amount of share groups compared to previous
|
||||||
|
behavior.
|
||||||
|
|
||||||
|
Manila client will have additional following optional key to "quota-update"
|
||||||
|
command::
|
||||||
|
|
||||||
|
$ manila quota-update <tenant_id> --share-groups %amount_as_integer_value%
|
||||||
|
|
||||||
|
In general, quota should be able to be set to any value and in case usage
|
||||||
|
exceeds current quota, request for creation of new resource will be refused.
|
||||||
|
|
||||||
|
Performance Impact
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Resource usages will be checked each time we create/delete resources, but
|
||||||
|
it is relatively cheap operation.
|
||||||
|
|
||||||
|
Other deployer impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Deployers will be able to set quotas for share groups using either
|
||||||
|
configuration file or "quota-update" API. It is optional possibility,
|
||||||
|
not a mandatory action.
|
||||||
|
New option will be named in the same way as all
|
||||||
|
existing ones - "quota_share_groups". It will accept only integer values.
|
||||||
|
|
||||||
|
Developer impact
|
||||||
|
----------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
|
||||||
|
* vponomaryov ( vponomaryov@mirantis.com )
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
* Server side API changes, including unit and functional tests
|
||||||
|
* Manila Client side changes, including unit and functional tests
|
||||||
|
* Manila UI side changes, including unit tests
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Testing
|
||||||
|
=======
|
||||||
|
|
||||||
|
* unit tests in 'manila', 'python-manilaclient' and 'manila-ui' projects
|
||||||
|
* functional tests in 'manila' and 'python-manilaclient' projects
|
||||||
|
|
||||||
|
Documentation Impact
|
||||||
|
====================
|
||||||
|
|
||||||
|
* admin guide: add new '--share-groups' parameter to 'update-quota' command.
|
||||||
|
* devref: reflect the proposed change
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
|
||||||
|
* Share Groups feature spec:
|
||||||
|
https://github.com/openstack/manila-specs/blob/master/specs/ocata/manila-share-groups.rst
|
Loading…
Reference in New Issue