block_storage: Add support for project_id in Limits

An admin should be able to list limits of other users. Cinder added such
functionality in microversion 3.39.

Closes-bug: #2071367
Change-Id: Ie2b33bef15d40a72b9aac4ec5bfe9eed93b0e864
Co-authored-by: Stephen Finucane <stephenfin@redhat.com>
This commit is contained in:
Rodrigo Barbieri 2024-07-12 10:18:49 +01:00 committed by Stephen Finucane
parent 1812926973
commit ecb35e0a65
3 changed files with 16 additions and 5 deletions

View File

@ -1291,7 +1291,11 @@ class Proxy(_base_proxy.BaseBlockStorageProxy):
params = {}
if project:
params['project_id'] = resource.Resource._get_id(project)
return self._get(_limits.Limits, requires_id=False, **params)
# we don't use Proxy._get since that doesn't allow passing arbitrary
# query string parameters
res = self._get_resource(_limits.Limits, None)
return res.fetch(self, requires_id=False, **params)
# ====== CAPABILITIES ======
def get_capabilities(self, host):

View File

@ -71,6 +71,12 @@ class Limits(resource.Resource):
resource_key = "limits"
base_path = "/limits"
_max_microversion = "3.39"
_query_mapping = resource.QueryParameters(
"project_id",
)
# capabilities
allow_fetch = True

View File

@ -19,7 +19,6 @@ from openstack.block_storage.v3 import extension
from openstack.block_storage.v3 import group
from openstack.block_storage.v3 import group_snapshot
from openstack.block_storage.v3 import group_type
from openstack.block_storage.v3 import limits
from openstack.block_storage.v3 import quota_class_set
from openstack.block_storage.v3 import quota_set
from openstack.block_storage.v3 import resource_filter
@ -136,11 +135,13 @@ class TestPools(TestVolumeProxy):
class TestLimit(TestVolumeProxy):
def test_limits_get(self):
self.verify_get(
self._verify(
'openstack.resource.Resource.fetch',
self.proxy.get_limits,
limits.Limits,
method_args=[],
expected_kwargs={'requires_id': False},
method_kwargs={'project': 'foo'},
expected_args=[self.proxy],
expected_kwargs={'requires_id': False, 'project_id': 'foo'},
)