QoS support for shares

Registered by zhongjun

The original BP content is saved below for historical reasons....

For Manila QoS, we agreed to define a common capability called "qos", but not to add any new APIs related to it. Drivers are free to implement QoS with their own capabilities and extra specs, and interoperability between drivers is left to the administrator. The new "qos" common capability simply provides a way to filter out backends with no QoS support whatsoever when QoS support is desired on a share-type.

--------------- Original (Obsolete) Definition ------------------

The design is to bond QoS with share types. So Manila admin can create various share types with different QoS requirements, and shares of same share type share the same QoS specifications.

The goal is
1) to add an interface so that Manila admins can use to set share QoS specification (IOPS, bandwidth, Latency, priority and other vendor specified attributes), which can be enforced in hypervisor or on Manila back-end or both;
2) to add an interface so that admins can use to express QoS requirements for shares (of specific back-ends), which will be consumed by back-end drivers.

Why only consider implementing on backend but no hypervisor involved?
nova-integration BP is not implemented. Using the 'front-end' (Nova Compute) for QoS that is still cannot implemented, but we can implemented on back-end。
Link:https://blueprints.launchpad.net/manila/+spec/nova-integration

Changes
- Add a new resource extension to 'types_extra_specs' API extension to allow list/create/update/delete of type QoS specs.
- Modify 'type_manage' API extension to be able to accept QoS specification info.
    qos-associate Associates qos specs with specified share type.
    qos-create Creates a qos specs.
    qos-delete Deletes a specified qos specs.
    qos-disassociate Disassociates qos specs from specified share type.
    qos-disassociate-all Disassociates qos specs from all associations.
    qos-get-association Gets all associations for specified qos specs.
    qos-key Sets or unsets specifications for a qos spec.
    qos-list Lists qos specs.
    qos-show Shows a specified qos specs.
- Modify share_types.create() to accept QoS specification info and do the checks.
- Add 'qos_specs' to request_specs and filter properties for a share create request and pass to driver.

Blueprint information

Status:
Complete
Approver:
Ben Swartzlander
Priority:
Medium
Drafter:
zhongjun
Direction:
Approved
Assignee:
zhongjun
Definition:
Approved
Series goal:
None
Implementation:
Implemented
Milestone target:
milestone icon mitaka-2
Started by
zhongjun
Completed by
Ben Swartzlander

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bp/manila-support-qos,n,z

Addressed by: https://review.openstack.org/247286
    QoS support for shares

Gerrit topic: https://review.openstack.org/#q,topic:bp/s,n,z

Addressed by: https://review.openstack.org/265694
    QoS support for Huawei Driver

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.