diff --git a/novaclient/tests/v1_1/test_limits.py b/novaclient/tests/v1_1/test_limits.py index 550c9c321..517a6f1fb 100644 --- a/novaclient/tests/v1_1/test_limits.py +++ b/novaclient/tests/v1_1/test_limits.py @@ -14,6 +14,11 @@ class LimitsTest(utils.TestCase): cs.assert_called('GET', '/limits') self.assertTrue(isinstance(obj, limits.Limits)) + def test_get_limits_for_a_tenant(self): + obj = cs.limits.get(tenant_id=1234) + cs.assert_called('GET', '/limits?tenant_id=1234') + self.assertTrue(isinstance(obj, limits.Limits)) + def test_absolute_limits(self): obj = cs.limits.get() @@ -42,6 +47,7 @@ class LimitsTest(utils.TestCase): limits.AbsoluteLimit("maxPersonalitySize", 10240), ) + cs.assert_called('GET', '/limits?reserved=1') abs_limits = list(obj.absolute) self.assertEqual(len(abs_limits), len(expected)) diff --git a/novaclient/tests/v1_1/test_shell.py b/novaclient/tests/v1_1/test_shell.py index 699e4674f..0107b0284 100644 --- a/novaclient/tests/v1_1/test_shell.py +++ b/novaclient/tests/v1_1/test_shell.py @@ -1313,6 +1313,9 @@ class ShellTest(utils.TestCase): self.run_command('absolute-limits --reserved') self.assert_called('GET', '/limits?reserved=1') + self.run_command('absolute-limits --tenant 1234') + self.assert_called('GET', '/limits?tenant_id=1234') + def test_evacuate(self): self.run_command('evacuate sample-server new_host') self.assert_called('POST', '/servers/1234/action', diff --git a/novaclient/v1_1/limits.py b/novaclient/v1_1/limits.py index 97b786f80..3eba65234 100644 --- a/novaclient/v1_1/limits.py +++ b/novaclient/v1_1/limits.py @@ -1,5 +1,7 @@ # Copyright 2011 OpenStack Foundation +import urllib + from novaclient import base @@ -70,12 +72,17 @@ class LimitsManager(base.Manager): resource_class = Limits - def get(self, reserved=False): + def get(self, reserved=False, tenant_id=None): """ Get a specific extension. :rtype: :class:`Limits` """ - query_string = "?reserved=1" if reserved else "" + opts = {} + if reserved: + opts['reserved'] = 1 + if tenant_id: + opts['tenant_id'] = tenant_id + query_string = "?%s" % urllib.urlencode(opts) if opts else "" return self._get("/limits%s" % query_string, "limits") diff --git a/novaclient/v1_1/shell.py b/novaclient/v1_1/shell.py index c7912cdbb..0156cbb55 100644 --- a/novaclient/v1_1/shell.py +++ b/novaclient/v1_1/shell.py @@ -2190,6 +2190,12 @@ def do_keypair_show(cs, args): _print_keypair(keypair) +@utils.arg('--tenant', + #nova db searches by project_id + dest='tenant', + metavar='<tenant>', + nargs='?', + help='Display information from single tenant (Admin only).') @utils.arg('--reserved', dest='reserved', action='store_true', @@ -2197,7 +2203,7 @@ def do_keypair_show(cs, args): help='Include reservations count.') def do_absolute_limits(cs, args): """Print a list of absolute limits for a user""" - limits = cs.limits.get(args.reserved).absolute + limits = cs.limits.get(args.reserved, args.tenant).absolute columns = ['Name', 'Value'] utils.print_list(limits, columns)