Merge "Improvement to query cg detail(Part 1)"
This commit is contained in:
commit
1d5882a3ab
@ -42,13 +42,13 @@ api_common_opts = [
|
|||||||
cfg.ListOpt('query_volume_filters',
|
cfg.ListOpt('query_volume_filters',
|
||||||
default=['name', 'status', 'metadata',
|
default=['name', 'status', 'metadata',
|
||||||
'availability_zone',
|
'availability_zone',
|
||||||
'bootable'],
|
'bootable', 'group_id'],
|
||||||
help="Volume filter options which "
|
help="Volume filter options which "
|
||||||
"non-admin user could use to "
|
"non-admin user could use to "
|
||||||
"query volumes. Default values "
|
"query volumes. Default values "
|
||||||
"are: ['name', 'status', "
|
"are: ['name', 'status', "
|
||||||
"'metadata', 'availability_zone' ,"
|
"'metadata', 'availability_zone' ,"
|
||||||
"'bootable']")
|
"'bootable', 'group_id']")
|
||||||
]
|
]
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
|
@ -57,6 +57,7 @@ REST_API_VERSION_HISTORY = """
|
|||||||
* 3.7 - Add cluster API and cluster_name field to service list API
|
* 3.7 - Add cluster API and cluster_name field to service list API
|
||||||
* 3.8 - Adds resources from volume_manage and snapshot_manage extensions.
|
* 3.8 - Adds resources from volume_manage and snapshot_manage extensions.
|
||||||
* 3.9 - Add backup update interface.
|
* 3.9 - Add backup update interface.
|
||||||
|
* 3.10 - Add group_id filter to list/detail volumes in _get_volumes.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -65,7 +66,7 @@ REST_API_VERSION_HISTORY = """
|
|||||||
# minimum version of the API supported.
|
# minimum version of the API supported.
|
||||||
# Explicitly using /v1 or /v2 enpoints will still work
|
# Explicitly using /v1 or /v2 enpoints will still work
|
||||||
_MIN_API_VERSION = "3.0"
|
_MIN_API_VERSION = "3.0"
|
||||||
_MAX_API_VERSION = "3.9"
|
_MAX_API_VERSION = "3.10"
|
||||||
_LEGACY_API_VERSION1 = "1.0"
|
_LEGACY_API_VERSION1 = "1.0"
|
||||||
_LEGACY_API_VERSION2 = "2.0"
|
_LEGACY_API_VERSION2 = "2.0"
|
||||||
|
|
||||||
|
@ -165,3 +165,8 @@ user documentation.
|
|||||||
"name": "backup_name",
|
"name": "backup_name",
|
||||||
"links": "backup_link",
|
"links": "backup_link",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
3.10
|
||||||
|
----
|
||||||
|
Added the filter parameters ``group_id`` to
|
||||||
|
list/detail volumes requests.
|
||||||
|
@ -36,6 +36,9 @@ class VolumeController(volumes_v2.VolumeController):
|
|||||||
if req_version.matches(None, "3.3"):
|
if req_version.matches(None, "3.3"):
|
||||||
filters.pop('glance_metadata', None)
|
filters.pop('glance_metadata', None)
|
||||||
|
|
||||||
|
if req_version.matches(None, "3.9"):
|
||||||
|
filters.pop('group_id', None)
|
||||||
|
|
||||||
utils.remove_invalid_filter_options(context, filters,
|
utils.remove_invalid_filter_options(context, filters,
|
||||||
self._get_volume_filter_options())
|
self._get_volume_filter_options())
|
||||||
# NOTE(thingee): v2 API allows name instead of display_name
|
# NOTE(thingee): v2 API allows name instead of display_name
|
||||||
@ -45,6 +48,9 @@ class VolumeController(volumes_v2.VolumeController):
|
|||||||
if 'name' in filters:
|
if 'name' in filters:
|
||||||
filters['display_name'] = filters.pop('name')
|
filters['display_name'] = filters.pop('name')
|
||||||
|
|
||||||
|
if 'group_id' in filters:
|
||||||
|
filters['consistencygroup_id'] = filters.pop('group_id')
|
||||||
|
|
||||||
strict = req.api_version_request.matches("3.2", None)
|
strict = req.api_version_request.matches("3.2", None)
|
||||||
self.volume_api.check_volume_filters(filters, strict)
|
self.volume_api.check_volume_filters(filters, strict)
|
||||||
|
|
||||||
|
@ -87,6 +87,19 @@ class VolumeApiTest(test.TestCase):
|
|||||||
'qcow2')
|
'qcow2')
|
||||||
return [vol1, vol2]
|
return [vol1, vol2]
|
||||||
|
|
||||||
|
def _create_volume_with_consistency_group(self):
|
||||||
|
vol1 = db.volume_create(self.ctxt, {'display_name': 'test1',
|
||||||
|
'project_id':
|
||||||
|
self.ctxt.project_id,
|
||||||
|
'consistencygroup_id':
|
||||||
|
fake.CONSISTENCY_GROUP_ID})
|
||||||
|
vol2 = db.volume_create(self.ctxt, {'display_name': 'test2',
|
||||||
|
'project_id':
|
||||||
|
self.ctxt.project_id,
|
||||||
|
'consistencygroup_id':
|
||||||
|
fake.CONSISTENCY_GROUP2_ID})
|
||||||
|
return [vol1, vol2]
|
||||||
|
|
||||||
def test_volume_index_filter_by_glance_metadata(self):
|
def test_volume_index_filter_by_glance_metadata(self):
|
||||||
vols = self._create_volume_with_glance_metadata()
|
vols = self._create_volume_with_glance_metadata()
|
||||||
req = fakes.HTTPRequest.blank("/v3/volumes?glance_metadata="
|
req = fakes.HTTPRequest.blank("/v3/volumes?glance_metadata="
|
||||||
@ -109,3 +122,26 @@ class VolumeApiTest(test.TestCase):
|
|||||||
res_dict = self.controller.index(req)
|
res_dict = self.controller.index(req)
|
||||||
volumes = res_dict['volumes']
|
volumes = res_dict['volumes']
|
||||||
self.assertEqual(2, len(volumes))
|
self.assertEqual(2, len(volumes))
|
||||||
|
|
||||||
|
def test_volume_index_filter_by_group_id(self):
|
||||||
|
vols = self._create_volume_with_consistency_group()
|
||||||
|
req = fakes.HTTPRequest.blank(("/v3/volumes?group_id=%s") %
|
||||||
|
fake.CONSISTENCY_GROUP_ID)
|
||||||
|
req.headers["OpenStack-API-Version"] = "volume 3.10"
|
||||||
|
req.api_version_request = api_version.APIVersionRequest('3.10')
|
||||||
|
req.environ['cinder.context'] = self.ctxt
|
||||||
|
res_dict = self.controller.index(req)
|
||||||
|
volumes = res_dict['volumes']
|
||||||
|
self.assertEqual(1, len(volumes))
|
||||||
|
self.assertEqual(vols[0].id, volumes[0]['id'])
|
||||||
|
|
||||||
|
def test_volume_index_filter_by_group_id_in_unsupport_version(self):
|
||||||
|
self._create_volume_with_consistency_group()
|
||||||
|
req = fakes.HTTPRequest.blank(("/v3/volumes?group_id=%s") %
|
||||||
|
fake.CONSISTENCY_GROUP2_ID)
|
||||||
|
req.headers["OpenStack-API-Version"] = "volume 3.9"
|
||||||
|
req.api_version_request = api_version.APIVersionRequest('3.9')
|
||||||
|
req.environ['cinder.context'] = self.ctxt
|
||||||
|
res_dict = self.controller.index(req)
|
||||||
|
volumes = res_dict['volumes']
|
||||||
|
self.assertEqual(2, len(volumes))
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- Added support for querying volumes filtered by group_id
|
||||||
|
using 'group_id' optional URL parameter.
|
||||||
|
For example, "volumes/detail?group_id={consistency_group_id}".
|
Loading…
x
Reference in New Issue
Block a user