New extension for version 2 of LBaaS API

Also added some constants for supported protocols, algorithms,
health monitor types, and session persistence types.

Partially-implements: blueprint lbaas-api-and-objmodel-improvement

Change-Id: I43270fdf9cd52a57274575ecea502f660ff0d5a9
Co-authored-by: Brandon Logan <brandon.logan@rackspace.com>
Co-authored-by: Vijayendra Bhamidipati <vbhamidipati@paypal.com>
This commit is contained in:
Brandon Logan 2014-07-08 17:02:33 -05:00 committed by Mark McClain
parent 8e941283b0
commit 495df9f4de
2 changed files with 45 additions and 1 deletions

View File

@ -13,22 +13,31 @@
# License for the specific language governing permissions and limitations
# under the License.
#FIXME(brandon-logan): change these to LB_ALGORITHM
LB_METHOD_ROUND_ROBIN = 'ROUND_ROBIN'
LB_METHOD_LEAST_CONNECTIONS = 'LEAST_CONNECTIONS'
LB_METHOD_SOURCE_IP = 'SOURCE_IP'
SUPPORTED_LB_ALGORITHMS = (LB_METHOD_LEAST_CONNECTIONS, LB_METHOD_ROUND_ROBIN,
LB_METHOD_SOURCE_IP)
PROTOCOL_TCP = 'TCP'
PROTOCOL_HTTP = 'HTTP'
PROTOCOL_HTTPS = 'HTTPS'
SUPPORTED_PROTOCOLS = (PROTOCOL_TCP, PROTOCOL_HTTPS, PROTOCOL_HTTP)
HEALTH_MONITOR_PING = 'PING'
HEALTH_MONITOR_TCP = 'TCP'
HEALTH_MONITOR_HTTP = 'HTTP'
HEALTH_MONITOR_HTTPS = 'HTTPS'
SUPPORTED_HEALTH_MONITOR_TYPES = (HEALTH_MONITOR_HTTP, HEALTH_MONITOR_HTTPS,
HEALTH_MONITOR_PING, HEALTH_MONITOR_TCP)
SESSION_PERSISTENCE_SOURCE_IP = 'SOURCE_IP'
SESSION_PERSISTENCE_HTTP_COOKIE = 'HTTP_COOKIE'
SESSION_PERSISTENCE_APP_COOKIE = 'APP_COOKIE'
SUPPORTED_SP_TYPES = (SESSION_PERSISTENCE_SOURCE_IP,
SESSION_PERSISTENCE_HTTP_COOKIE,
SESSION_PERSISTENCE_APP_COOKIE)
STATS_ACTIVE_CONNECTIONS = 'active_connections'
STATS_MAX_CONNECTIONS = 'max_connections'

View File

@ -30,7 +30,8 @@ class LBaaSQuotaExtensionTestCase(
super(LBaaSQuotaExtensionTestCase, self).setUp()
cfg.CONF.set_override(
'quota_items',
['vip', 'pool', 'member', 'health_monitor', 'extra1'],
['vip', 'pool', 'member', 'health_monitor', 'extra1',
'loadbalancer', 'listener', 'healthmonitor'],
group='QUOTAS')
quota.register_resources_from_config()
@ -62,6 +63,9 @@ class LBaaSQuotaExtensionDbTestCase(LBaaSQuotaExtensionTestCase):
self.assertEqual(-1, quota['quota']['member'])
self.assertEqual(-1, quota['quota']['health_monitor'])
self.assertEqual(-1, quota['quota']['extra1'])
self.assertEqual(10, quota['quota']['loadbalancer'])
self.assertEqual(-1, quota['quota']['listener'])
self.assertEqual(-1, quota['quota']['healthmonitor'])
def test_show_quotas_with_admin(self):
tenant_id = 'tenant_id1'
@ -75,6 +79,9 @@ class LBaaSQuotaExtensionDbTestCase(LBaaSQuotaExtensionTestCase):
self.assertEqual(10, quota['quota']['pool'])
self.assertEqual(-1, quota['quota']['member'])
self.assertEqual(-1, quota['quota']['health_monitor'])
self.assertEqual(10, quota['quota']['loadbalancer'])
self.assertEqual(-1, quota['quota']['listener'])
self.assertEqual(-1, quota['quota']['healthmonitor'])
def test_show_quotas_with_owner_tenant(self):
tenant_id = 'tenant_id1'
@ -88,6 +95,9 @@ class LBaaSQuotaExtensionDbTestCase(LBaaSQuotaExtensionTestCase):
self.assertEqual(10, quota['quota']['pool'])
self.assertEqual(-1, quota['quota']['member'])
self.assertEqual(-1, quota['quota']['health_monitor'])
self.assertEqual(10, quota['quota']['loadbalancer'])
self.assertEqual(-1, quota['quota']['listener'])
self.assertEqual(-1, quota['quota']['healthmonitor'])
def test_update_quotas_to_unlimited(self):
tenant_id = 'tenant_id1'
@ -98,6 +108,11 @@ class LBaaSQuotaExtensionDbTestCase(LBaaSQuotaExtensionTestCase):
self.serialize(quotas), extra_environ=env,
expect_errors=False)
self.assertEqual(200, res.status_int)
quotas = {'quota': {'loadbalancer': -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'
@ -108,6 +123,11 @@ class LBaaSQuotaExtensionDbTestCase(LBaaSQuotaExtensionTestCase):
self.serialize(quotas), extra_environ=env,
expect_errors=False)
self.assertEqual(200, res.status_int)
quotas = {'quota': {'loadbalancer': 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'
@ -117,6 +137,10 @@ class LBaaSQuotaExtensionDbTestCase(LBaaSQuotaExtensionTestCase):
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)
quotas = {'quota': {'loadbalancer': 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)
@ -125,6 +149,9 @@ class LBaaSQuotaExtensionDbTestCase(LBaaSQuotaExtensionTestCase):
self.assertEqual(100, quota['quota']['pool'])
self.assertEqual(-1, quota['quota']['member'])
self.assertEqual(-1, quota['quota']['health_monitor'])
self.assertEqual(100, quota['quota']['loadbalancer'])
self.assertEqual(-1, quota['quota']['listener'])
self.assertEqual(-1, quota['quota']['healthmonitor'])
class LBaaSQuotaExtensionDbTestCaseXML(LBaaSQuotaExtensionDbTestCase):
@ -152,6 +179,9 @@ class LBaaSQuotaExtensionCfgTestCase(
self.assertEqual(-1, quota['quota']['member'])
self.assertEqual(-1, quota['quota']['health_monitor'])
self.assertEqual(-1, quota['quota']['extra1'])
self.assertEqual(10, quota['quota']['loadbalancer'])
self.assertEqual(-1, quota['quota']['listener'])
self.assertEqual(-1, quota['quota']['healthmonitor'])
def test_update_quotas_forbidden(self):
tenant_id = 'tenant_id1'
@ -160,6 +190,11 @@ class LBaaSQuotaExtensionCfgTestCase(
self.serialize(quotas),
expect_errors=True)
self.assertEqual(403, res.status_int)
quotas = {'quota': {'loadbalancer': 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):