diff --git a/cinderclient/tests/unit/v2/test_limits.py b/cinderclient/tests/unit/v2/test_limits.py index 6c143bf80..1bc900f54 100644 --- a/cinderclient/tests/unit/v2/test_limits.py +++ b/cinderclient/tests/unit/v2/test_limits.py @@ -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("", 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: diff --git a/cinderclient/v3/limits.py b/cinderclient/v3/limits.py index 512a58dec..fa4585ebb 100644 --- a/cinderclient/v3/limits.py +++ b/cinderclient/v3/limits.py @@ -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") diff --git a/cinderclient/v3/shell.py b/cinderclient/v3/shell.py index ebd71e63d..3532daab0 100644 --- a/cinderclient/v3/shell.py +++ b/cinderclient/v3/shell.py @@ -1214,18 +1214,28 @@ def do_quota_class_update(cs, args): _quota_update(cs.quota_classes, args.class_name, args) +@utils.arg('tenant', + metavar='', + 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='', + 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)