Kien Nguyen eedf5c7fdd Allow setting quota of other tenants
Currently, the quota API/CLI allows users to set
quotas for current tenant only. However, admin
users needs the ability to set quota for other
tenants. For example:

   $ source /opt/stack/devstack/openrc admin admin
   $ openstack appcontainer quota update --containers 100 <DEMO_TENANT_UUID>

Depends-On: https://review.openstack.org/627075
Change-Id: Ia147575d3e8d2c6d54bddd98846f0c9e3e518ec3
Related-Bug: #1807620
2018-12-24 14:52:48 +07:00

92 lines
2.2 KiB
Python

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain a
# copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import testtools
from zunclient.tests.unit import utils
from zunclient.v1 import quotas
DEFAULT_QUOTAS = {
'containers': '40',
'memory': '51200',
'cpu': '20',
'disk': '100'
}
MODIFIED_QUOTAS = {
'containers': '50',
'memory': '51200',
'cpu': '20',
'disk': '100'
}
MODIFIED_USAGE_QUOTAS = {
'containers': {
'limit': '50',
'in_use': '30'
},
'memory': {},
'cpu': {},
'disk': {}
}
fake_responses = {
'/v1/quotas/test_project_id':
{
'GET': (
{},
MODIFIED_QUOTAS
),
'PUT': (
{},
MODIFIED_QUOTAS
),
'DELETE': (
{},
None
)
},
'/v1/quotas/test_project_id/defaults':
{
'GET': (
{},
DEFAULT_QUOTAS
)
},
'/v1/quotas/test_project_id?usages=True':
{
'GET': (
{},
MODIFIED_USAGE_QUOTAS
)
}
}
class QuotaManagerTest(testtools.TestCase):
def setUp(self):
super(QuotaManagerTest, self).setUp()
self.api = utils.FakeAPI(fake_responses)
self.mgr = quotas.QuotaManager(self.api)
def test_quotas_get_defaults(self):
quotas = self.mgr.defaults('test_project_id')
expect = [
('GET', '/v1/quotas/test_project_id/defaults', {}, None)
]
self.assertEqual(expect, self.api.calls)
self.assertEqual(quotas.containers, DEFAULT_QUOTAS['containers'])
self.assertEqual(quotas.memory, DEFAULT_QUOTAS['memory'])
self.assertEqual(quotas.cpu, DEFAULT_QUOTAS['cpu'])
self.assertEqual(quotas.disk, DEFAULT_QUOTAS['disk'])