Merge "Add tenant_id parameter to limits."

This commit is contained in:
Jenkins
2016-08-02 14:29:40 +00:00
committed by Gerrit Code Review
3 changed files with 31 additions and 6 deletions

View File

@@ -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:

View File

@@ -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")

View File

@@ -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)