Improvement to query consistency group detail
This feature allows users to get the list of volume ids that exist in a consistency group by querying this CG detail or by querying volumes with filter "cg_id=xxx". APIImpact List of volume ids will be added to repsonse body of querying a CG detail. Add a filter "cg_id=xxx" in URL of querying volume list/detail. DocImpact Implements: blueprint improvement-to-query-consistency-group-detail Change-Id: I76d631547149d18761f2f348d55241991f0c76ba
This commit is contained in:
parent
967c2b0a0e
commit
c32e8abf8c
155
specs/newton/improvement-to-query-consistency-group-detail.rst
Normal file
155
specs/newton/improvement-to-query-consistency-group-detail.rst
Normal file
@ -0,0 +1,155 @@
|
||||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
=============================================
|
||||
Improvement to query consistency group detail
|
||||
=============================================
|
||||
|
||||
https://blueprints.launchpad.net/cinder/+spec/improvement-to-query-consistency-group-detail
|
||||
|
||||
Return the volume id list if they exist in CG when querying CG detail.
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
||||
Currently, querying consistency group detail will not return list of volumes
|
||||
ids that exist in this CG, end users don't know how many and which volumes are
|
||||
in it. They must query the volume detail one by one to get the CG's id and
|
||||
form the list of volume ids. It's very inconvenient to user experience.
|
||||
|
||||
|
||||
Use Cases
|
||||
=========
|
||||
|
||||
After adding volumes to a consistency group, end user wants to know how many
|
||||
and which volumes are in a CG before they decide to make CG snapshot.
|
||||
According to this feature, they can get this information easily by querying
|
||||
consistency group detail, and make further adjustment, like adding more
|
||||
volumes, or remove some volumes from this consistency group.
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
1.Add volume id list into response body of querying a consistency group detail
|
||||
if user wants those volume's information.
|
||||
|
||||
2.Add group_id query filter to /volumes to get a list of volumes
|
||||
in a CG. For example "cinder list --group-id <uuid of CG>".
|
||||
|
||||
NOTE: Since we're working on Generic Volume Group[1], to avoid unnecessary
|
||||
code mirgation later, we will implement the 'group_id' query filter first,
|
||||
and after Generic Volume Group is merged, we will implement the #1 way
|
||||
dependent on the Generic Group spec.
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
None
|
||||
|
||||
Data model impact
|
||||
-----------------
|
||||
|
||||
For performance impact, if we want to add index to consistencygroup_id column,
|
||||
there is data model impact.
|
||||
|
||||
REST API impact
|
||||
---------------
|
||||
|
||||
* Add volume id list into response body of querying a CG detail if specifying
|
||||
the argument 'list_volume=True', this will be dependent on the Generic Group
|
||||
spec now, so just leave a example here::
|
||||
|
||||
GET /v3/{project_id}/consistencygroups/{consistency_group_id}?list_volume=True
|
||||
RESP BODY: {"consistencygroup": {"status": "XXX",
|
||||
"description": "XXX",
|
||||
...,
|
||||
"volume_list":['volume_id1',
|
||||
...,
|
||||
'volume_idn']
|
||||
}
|
||||
}
|
||||
|
||||
* Add a filter "group_id=xxx" in URL of querying volume list/detail::
|
||||
|
||||
GET /v3/{project_id}/volumes?group_id=XXX
|
||||
|
||||
Security impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
Notifications impact
|
||||
--------------------
|
||||
|
||||
None.
|
||||
|
||||
Other end user impact
|
||||
---------------------
|
||||
|
||||
None
|
||||
|
||||
Performance Impact
|
||||
------------------
|
||||
|
||||
There is no performance impact if user is NOT using 'list_volume=True'.
|
||||
We just need to consider to add a additional DB query to get all
|
||||
volume ids which have same CG id. So the performance impact should
|
||||
be small with 'list_volume=True'. If considering large scale volumes,
|
||||
we can add index to consistencygroup_id column of volume table
|
||||
to reduce performance impact.
|
||||
|
||||
Other deployer impact
|
||||
---------------------
|
||||
|
||||
None
|
||||
|
||||
Developer impact
|
||||
----------------
|
||||
|
||||
None
|
||||
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
Primary assignee:
|
||||
wanghao<wanghao749@huawei.com>
|
||||
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
* Implement code in db query and add list to response body.
|
||||
* Update cinderclient to support this function.
|
||||
* Add change to API doc.
|
||||
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
None
|
||||
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
Both unit and Tempest tests need to be created to cover the code change that
|
||||
mentioned in "Proposed change".
|
||||
|
||||
|
||||
Documentation Impact
|
||||
====================
|
||||
|
||||
1. The cinder API documentation will need to be updated to reflect the REST
|
||||
API changes.
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
[1]https://review.openstack.org/#/c/303893/
|
Loading…
x
Reference in New Issue
Block a user