167 lines
6.7 KiB
Python
167 lines
6.7 KiB
Python
# Copyright 2014 OpenStack Foundation.
|
|
# All Rights Reserved.
|
|
#
|
|
# 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.
|
|
|
|
from oslo.config import cfg
|
|
|
|
from neutron import context
|
|
from neutron import quota
|
|
from neutron.tests.unit import test_api_v2
|
|
from neutron.tests.unit import test_quota_ext
|
|
|
|
_get_path = test_api_v2._get_path
|
|
|
|
|
|
class LBaaSQuotaExtensionTestCase(
|
|
test_quota_ext.QuotaExtensionTestCase):
|
|
|
|
def setUp(self):
|
|
super(LBaaSQuotaExtensionTestCase, self).setUp()
|
|
cfg.CONF.set_override(
|
|
'quota_items',
|
|
['vip', 'pool', 'member', 'health_monitor', 'extra1'],
|
|
group='QUOTAS')
|
|
quota.register_resources_from_config()
|
|
|
|
|
|
class LBaaSQuotaExtensionDbTestCase(LBaaSQuotaExtensionTestCase):
|
|
fmt = 'json'
|
|
|
|
def setUp(self):
|
|
cfg.CONF.set_override(
|
|
'quota_driver',
|
|
'neutron.db.quota_db.DbQuotaDriver',
|
|
group='QUOTAS')
|
|
super(LBaaSQuotaExtensionDbTestCase, self).setUp()
|
|
|
|
def test_quotas_loaded_right(self):
|
|
res = self.api.get(_get_path('quotas', fmt=self.fmt))
|
|
quota = self.deserialize(res)
|
|
self.assertEqual([], quota['quotas'])
|
|
self.assertEqual(200, res.status_int)
|
|
|
|
def test_quotas_default_values(self):
|
|
tenant_id = 'tenant_id1'
|
|
env = {'neutron.context': context.Context('', tenant_id)}
|
|
res = self.api.get(_get_path('quotas', id=tenant_id, fmt=self.fmt),
|
|
extra_environ=env)
|
|
quota = self.deserialize(res)
|
|
self.assertEqual(10, quota['quota']['vip'])
|
|
self.assertEqual(10, quota['quota']['pool'])
|
|
self.assertEqual(-1, quota['quota']['member'])
|
|
self.assertEqual(-1, quota['quota']['health_monitor'])
|
|
self.assertEqual(-1, quota['quota']['extra1'])
|
|
|
|
def test_show_quotas_with_admin(self):
|
|
tenant_id = 'tenant_id1'
|
|
env = {'neutron.context': context.Context('', tenant_id + '2',
|
|
is_admin=True)}
|
|
res = self.api.get(_get_path('quotas', id=tenant_id, fmt=self.fmt),
|
|
extra_environ=env)
|
|
self.assertEqual(200, res.status_int)
|
|
quota = self.deserialize(res)
|
|
self.assertEqual(10, quota['quota']['vip'])
|
|
self.assertEqual(10, quota['quota']['pool'])
|
|
self.assertEqual(-1, quota['quota']['member'])
|
|
self.assertEqual(-1, quota['quota']['health_monitor'])
|
|
|
|
def test_show_quotas_with_owner_tenant(self):
|
|
tenant_id = 'tenant_id1'
|
|
env = {'neutron.context': context.Context('', tenant_id,
|
|
is_admin=False)}
|
|
res = self.api.get(_get_path('quotas', id=tenant_id, fmt=self.fmt),
|
|
extra_environ=env)
|
|
self.assertEqual(200, res.status_int)
|
|
quota = self.deserialize(res)
|
|
self.assertEqual(10, quota['quota']['vip'])
|
|
self.assertEqual(10, quota['quota']['pool'])
|
|
self.assertEqual(-1, quota['quota']['member'])
|
|
self.assertEqual(-1, quota['quota']['health_monitor'])
|
|
|
|
def test_update_quotas_to_unlimited(self):
|
|
tenant_id = 'tenant_id1'
|
|
env = {'neutron.context': context.Context('', tenant_id,
|
|
is_admin=True)}
|
|
quotas = {'quota': {'pool': -1}}
|
|
res = self.api.put(_get_path('quotas', id=tenant_id, fmt=self.fmt),
|
|
self.serialize(quotas), extra_environ=env,
|
|
expect_errors=False)
|
|
self.assertEqual(200, res.status_int)
|
|
|
|
def test_update_quotas_exceeding_current_limit(self):
|
|
tenant_id = 'tenant_id1'
|
|
env = {'neutron.context': context.Context('', tenant_id,
|
|
is_admin=True)}
|
|
quotas = {'quota': {'pool': 120}}
|
|
res = self.api.put(_get_path('quotas', id=tenant_id, fmt=self.fmt),
|
|
self.serialize(quotas), extra_environ=env,
|
|
expect_errors=False)
|
|
self.assertEqual(200, res.status_int)
|
|
|
|
def test_update_quotas_with_admin(self):
|
|
tenant_id = 'tenant_id1'
|
|
env = {'neutron.context': context.Context('', tenant_id + '2',
|
|
is_admin=True)}
|
|
quotas = {'quota': {'pool': 100}}
|
|
res = self.api.put(_get_path('quotas', id=tenant_id, fmt=self.fmt),
|
|
self.serialize(quotas), extra_environ=env)
|
|
self.assertEqual(200, res.status_int)
|
|
env2 = {'neutron.context': context.Context('', tenant_id)}
|
|
res = self.api.get(_get_path('quotas', id=tenant_id, fmt=self.fmt),
|
|
extra_environ=env2)
|
|
quota = self.deserialize(res)
|
|
self.assertEqual(10, quota['quota']['vip'])
|
|
self.assertEqual(100, quota['quota']['pool'])
|
|
self.assertEqual(-1, quota['quota']['member'])
|
|
self.assertEqual(-1, quota['quota']['health_monitor'])
|
|
|
|
|
|
class LBaaSQuotaExtensionDbTestCaseXML(LBaaSQuotaExtensionDbTestCase):
|
|
fmt = 'xml'
|
|
|
|
|
|
class LBaaSQuotaExtensionCfgTestCase(
|
|
LBaaSQuotaExtensionTestCase):
|
|
|
|
def setUp(self):
|
|
cfg.CONF.set_override(
|
|
'quota_driver',
|
|
'neutron.quota.ConfDriver',
|
|
group='QUOTAS')
|
|
super(LBaaSQuotaExtensionCfgTestCase, self).setUp()
|
|
|
|
def test_quotas_default_values(self):
|
|
tenant_id = 'tenant_id1'
|
|
env = {'neutron.context': context.Context('', tenant_id)}
|
|
res = self.api.get(_get_path('quotas', id=tenant_id, fmt=self.fmt),
|
|
extra_environ=env)
|
|
quota = self.deserialize(res)
|
|
self.assertEqual(10, quota['quota']['vip'])
|
|
self.assertEqual(10, quota['quota']['pool'])
|
|
self.assertEqual(-1, quota['quota']['member'])
|
|
self.assertEqual(-1, quota['quota']['health_monitor'])
|
|
self.assertEqual(-1, quota['quota']['extra1'])
|
|
|
|
def test_update_quotas_forbidden(self):
|
|
tenant_id = 'tenant_id1'
|
|
quotas = {'quota': {'pool': 100}}
|
|
res = self.api.put(_get_path('quotas', id=tenant_id, fmt=self.fmt),
|
|
self.serialize(quotas),
|
|
expect_errors=True)
|
|
self.assertEqual(403, res.status_int)
|
|
|
|
|
|
class LBaaSQuotaExtensionCfgTestCaseXML(LBaaSQuotaExtensionCfgTestCase):
|
|
fmt = 'xml'
|