Merge "Add tenant_id parameter to limits."
This commit is contained in:
		| @@ -13,6 +13,7 @@ | |||||||
| # See the License for the specific language governing permissions and | # See the License for the specific language governing permissions and | ||||||
| # limitations under the License. | # limitations under the License. | ||||||
|  |  | ||||||
|  | import ddt | ||||||
| import mock | import mock | ||||||
|  |  | ||||||
| from cinderclient.tests.unit import utils | from cinderclient.tests.unit import utils | ||||||
| @@ -155,8 +156,10 @@ class TestAbsoluteLimit(utils.TestCase): | |||||||
|         self.assertEqual("<AbsoluteLimit: name=name1>", repr(l1)) |         self.assertEqual("<AbsoluteLimit: name=name1>", repr(l1)) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @ddt.ddt | ||||||
| class TestLimitsManager(utils.TestCase): | class TestLimitsManager(utils.TestCase): | ||||||
|     def test_get(self): |     @ddt.data(None, 'test') | ||||||
|  |     def test_get(self, tenant_id): | ||||||
|         api = mock.Mock() |         api = mock.Mock() | ||||||
|         api.client.get.return_value = ( |         api.client.get.return_value = ( | ||||||
|             None, |             None, | ||||||
| @@ -165,7 +168,11 @@ class TestLimitsManager(utils.TestCase): | |||||||
|         l1 = limits.AbsoluteLimit("name1", "value1") |         l1 = limits.AbsoluteLimit("name1", "value1") | ||||||
|         limitsManager = limits.LimitsManager(api) |         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) |         self.assertIsInstance(lim, limits.Limits) | ||||||
|         for l in lim.absolute: |         for l in lim.absolute: | ||||||
|   | |||||||
| @@ -13,6 +13,8 @@ | |||||||
| # See the License for the specific language governing permissions and | # See the License for the specific language governing permissions and | ||||||
| # limitations under the License. | # limitations under the License. | ||||||
|  |  | ||||||
|  | from six.moves.urllib import parse | ||||||
|  |  | ||||||
| from cinderclient import base | from cinderclient import base | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -83,9 +85,15 @@ class LimitsManager(base.Manager): | |||||||
|  |  | ||||||
|     resource_class = Limits |     resource_class = Limits | ||||||
|  |  | ||||||
|     def get(self): |     def get(self, tenant_id=None): | ||||||
|         """Get a specific extension. |         """Get a specific extension. | ||||||
|  |  | ||||||
|         :rtype: :class:`Limits` |         :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) |     _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') | @utils.service_type('volumev3') | ||||||
| def do_absolute_limits(cs, args): | def do_absolute_limits(cs, args): | ||||||
|     """Lists absolute limits for a user.""" |     """Lists absolute limits for a user.""" | ||||||
|     limits = cs.limits.get().absolute |     limits = cs.limits.get(args.tenant).absolute | ||||||
|     columns = ['Name', 'Value'] |     columns = ['Name', 'Value'] | ||||||
|     utils.print_list(limits, columns) |     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') | @utils.service_type('volumev3') | ||||||
| def do_rate_limits(cs, args): | def do_rate_limits(cs, args): | ||||||
|     """Lists rate limits for a user.""" |     """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'] |     columns = ['Verb', 'URI', 'Value', 'Remain', 'Unit', 'Next_Available'] | ||||||
|     utils.print_list(limits, columns) |     utils.print_list(limits, columns) | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jenkins
					Jenkins