cinder-specs/specs/pike/add-volumegroup-into-quota-management.rst
wangxiyuan b7b101c8a6 Add Generic Volume Group Into Quota Management
Generic Volume Group currently has it own quota mechanism.
But we can't get or set any information about the Generic
Volume Group quota at API layer.

Change-Id: I05c88fa2dcd7172dab28db12ab87e35255d64e3e
blueprint: add-volumegroup-into-quota-management
2017-02-23 09:56:00 -05:00

3.6 KiB

Add Generic Volume Group Into Quota Management

https://blueprints.launchpad.net/cinder/+spec/add-volumegroup-into-quota-management

Generic Volume Group currently has its own quota mechanism. But we can't get any information about the Generic Volume Group quota at the API layer.

Problem description

Cinder already achieved Generic Volume Group quota mechanism. It means that there is a Generic Volume Group quota class(the hard_limit is 10) at the DB layer. But the Generic Volume Group's quota information wasn't contained in any quota API's response body, so that users can't get or update it.

Use Cases

Cinder should allow users to get and update the Generic Volume Group's quota. It's terrible that users could only use the Generic Volume Group quota's default value and can't update it. With this change, users could 1) change the value of Generic Volume Group's hard limit, 2) get the Generic Volume Group's quota usage, through the Cinder's quota API.

Proposed change

Let quota management undertake Generic Volume Group quota. And these five APIs will be changed: 1) quota-class-show :

GET /os-quota-class-sets/default

Add a new line in the response body. :

{
    "quota_class_set": {
        "groups": 10
    }
}

2) quota-show, quota-usage :

GET /os-quota-sets/{project_id}?usage={False, True}

Add a new line in the response body. :

{
    "quota_set": {
        "groups": {
            "reserved": 0,
            "allocated": 0,
            "limit": 10,
            "in_use": 0
        }
    }
}

3) quota-defaults :

GET /os-quota-sets/{project_id}/defaults

Add a new line in the response body. :

{
    "quota_set": {
        "groups": 10
    }
}

4) quota-class-update :

PUT /os-quota-class-sets/default

Allow update "groups" and Add a new line in the response body. :

{
    "quota_class_set": {
        "groups": 10
    }
}

5) quota-update :

PUT /os-quota-sets/{project_id}

Allow update "groups" and Add a new line in the response body. :

{
    "quota_set": {
        "groups": 10
    }
}

Alternatives

Leave as is.

Data model impact

None

REST API impact

  • The response body of "quota-defaults", "quota-usage", "quota-show" and "quota-class-show" APIs will contain Generic Volume Group.
  • The "quota-update" and "quota-class-update" APIs will accept the "groups" parameter and the response body will contain Generic Volume Group.

Security impact

None

Notifications impact

None

Other end user impact

None

Performance Impact

None

Other deployer impact

None

Developer impact

None.

Implementation

Assignee(s)

Primary assignee:

wangxiyuan

Work Items

  • Add Generic Volume Group's quota to quota APIs
  • Add and update the unit tests
  • Update the CinderClient's quota commands

Dependencies

None

Testing

Standard unit tests and manual testing.

Documentation Impact

  • The response body of quota-defaults, quota-usage, quota-show and quota-class-show should be updated.
  • The request body of quota-update, quota-class-update should be updated.

References

None