Add tenant_id parameter to limits.
Cinder API allows specifying tenant_id to get tenant specific resource usage. This was missing in the client. This fix should allow fetching tenant specific resource usage directly from the client. Added tenant argument to the limits CLI. Closes-Bug: #1580562 Change-Id: I3fbd6341f6d018a79e7c343107ac974b6fbb9239
This commit is contained in:
parent
762212f7fe
commit
1a973235f0
@ -13,6 +13,7 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import ddt
|
||||
import mock
|
||||
|
||||
from cinderclient.tests.unit import utils
|
||||
@ -155,8 +156,10 @@ class TestAbsoluteLimit(utils.TestCase):
|
||||
self.assertEqual("<AbsoluteLimit: name=name1>", repr(l1))
|
||||
|
||||
|
||||
@ddt.ddt
|
||||
class TestLimitsManager(utils.TestCase):
|
||||
def test_get(self):
|
||||
@ddt.data(None, 'test')
|
||||
def test_get(self, tenant_id):
|
||||
api = mock.Mock()
|
||||
api.client.get.return_value = (
|
||||
None,
|
||||
@ -165,7 +168,11 @@ class TestLimitsManager(utils.TestCase):
|
||||
l1 = limits.AbsoluteLimit("name1", "value1")
|
||||
limitsManager = limits.LimitsManager(api)
|
||||
|
||||
lim = limitsManager.get()
|
||||
lim = limitsManager.get(tenant_id)
|
||||
query_str = ''
|
||||
if tenant_id:
|
||||
query_str = '?tenant_id=%s' % tenant_id
|
||||
api.client.get.assert_called_once_with('/limits%s' % query_str)
|
||||
|
||||
self.assertIsInstance(lim, limits.Limits)
|
||||
for l in lim.absolute:
|
||||
|
@ -13,6 +13,8 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from six.moves.urllib import parse
|
||||
|
||||
from cinderclient import base
|
||||
|
||||
|
||||
@ -83,9 +85,15 @@ class LimitsManager(base.Manager):
|
||||
|
||||
resource_class = Limits
|
||||
|
||||
def get(self):
|
||||
def get(self, tenant_id=None):
|
||||
"""Get a specific extension.
|
||||
|
||||
:rtype: :class:`Limits`
|
||||
"""
|
||||
return self._get("/limits", "limits")
|
||||
opts = {}
|
||||
if tenant_id:
|
||||
opts['tenant_id'] = tenant_id
|
||||
|
||||
query_string = "?%s" % parse.urlencode(opts) if opts else ""
|
||||
|
||||
return self._get("/limits%s" % query_string, "limits")
|
||||
|
@ -1214,18 +1214,28 @@ def do_quota_class_update(cs, args):
|
||||
_quota_update(cs.quota_classes, args.class_name, args)
|
||||
|
||||
|
||||
@utils.arg('tenant',
|
||||
metavar='<tenant_id>',
|
||||
nargs='?',
|
||||
default=None,
|
||||
help='Display information for a single tenant (Admin only).')
|
||||
@utils.service_type('volumev3')
|
||||
def do_absolute_limits(cs, args):
|
||||
"""Lists absolute limits for a user."""
|
||||
limits = cs.limits.get().absolute
|
||||
limits = cs.limits.get(args.tenant).absolute
|
||||
columns = ['Name', 'Value']
|
||||
utils.print_list(limits, columns)
|
||||
|
||||
|
||||
@utils.arg('tenant',
|
||||
metavar='<tenant_id>',
|
||||
nargs='?',
|
||||
default=None,
|
||||
help='Display information for a single tenant (Admin only).')
|
||||
@utils.service_type('volumev3')
|
||||
def do_rate_limits(cs, args):
|
||||
"""Lists rate limits for a user."""
|
||||
limits = cs.limits.get().rate
|
||||
limits = cs.limits.get(args.tenant).rate
|
||||
columns = ['Verb', 'URI', 'Value', 'Remain', 'Unit', 'Next_Available']
|
||||
utils.print_list(limits, columns)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user