From 4e2f6a81d8f079fbb0bfb975a85ede8211c56080 Mon Sep 17 00:00:00 2001 From: jlongstaf Date: Fri, 14 Jul 2017 08:25:45 -0600 Subject: [PATCH] Adds L7 policy and rule support Adds L7 policy and L7 rule managers to F5 shim driver. Adds additional L7 tests to shim driver test. Change-Id: I638706b46a13639e2482a992124fa39112a55983 Closes-Bug: #1704211 --- neutron_lbaas/drivers/f5/driver_v2.py | 44 +++++++++++++++++-- .../tests/unit/drivers/f5/test_driver_v2.py | 24 +++++++--- 2 files changed, 59 insertions(+), 9 deletions(-) diff --git a/neutron_lbaas/drivers/f5/driver_v2.py b/neutron_lbaas/drivers/f5/driver_v2.py index 87c64344f..3a8b633b2 100644 --- a/neutron_lbaas/drivers/f5/driver_v2.py +++ b/neutron_lbaas/drivers/f5/driver_v2.py @@ -1,4 +1,4 @@ -# Copyright 2016 F5 Networks Inc. +# Copyright 2016-2017 F5 Networks Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,11 +14,13 @@ # import f5lbaasdriver +from f5lbaasdriver.v2.bigip.driver_v2 import F5DriverV2 -from neutron_lbaas.drivers import driver_base from oslo_log import log as logging -VERSION = "0.1.1" +from neutron_lbaas.drivers import driver_base + +VERSION = "1.0.0" LOG = logging.getLogger(__name__) @@ -36,11 +38,21 @@ class F5LBaaSV2Driver(driver_base.LoadBalancerBaseDriver): self.pool = PoolManager(self) self.member = MemberManager(self) self.health_monitor = HealthMonitorManager(self) + self.l7policy = L7PolicyManager(self) + self.l7rule = L7RuleManager(self) + + if not env: + msg = "F5LBaaSV2Driver cannot be intialized because the "\ + "environment is not defined. To set the environment, edit "\ + "neutron_lbaas.conf and append the environment name to the "\ + "service_provider class name." + LOG.debug(msg) + raise UndefinedEnvironment(msg) LOG.debug("F5LBaaSV2Driver: initializing, version=%s, impl=%s, env=%s" % (VERSION, f5lbaasdriver.__version__, env)) - self.f5 = f5lbaasdriver.v2.bigip.driver_v2.F5DriverV2(plugin, env) + self.f5 = F5DriverV2(plugin, env) class F5LBaaSV2DriverTest(F5LBaaSV2Driver): @@ -128,3 +140,27 @@ class HealthMonitorManager(driver_base.BaseHealthMonitorManager): def delete(self, context, health_monitor): self.driver.f5.healthmonitor.delete(context, health_monitor) + + +class L7PolicyManager(driver_base.BaseL7PolicyManager): + + def create(self, context, l7policy): + self.driver.f5.l7policy.create(context, l7policy) + + def update(self, context, old_l7policy, l7policy): + self.driver.f5.l7policy.update(context, old_l7policy, l7policy) + + def delete(self, context, l7policy): + self.driver.f5.l7policy.delete(context, l7policy) + + +class L7RuleManager(driver_base.BaseL7RuleManager): + + def create(self, context, l7rule): + self.driver.f5.l7rule.create(context, l7rule) + + def update(self, context, old_l7rule, l7rule): + self.driver.f5.l7rule.update(context, old_l7rule, l7rule) + + def delete(self, context, l7rule): + self.driver.f5.l7rule.delete(context, l7rule) diff --git a/neutron_lbaas/tests/unit/drivers/f5/test_driver_v2.py b/neutron_lbaas/tests/unit/drivers/f5/test_driver_v2.py index 86b2ec4d9..a40ee436d 100644 --- a/neutron_lbaas/tests/unit/drivers/f5/test_driver_v2.py +++ b/neutron_lbaas/tests/unit/drivers/f5/test_driver_v2.py @@ -1,4 +1,4 @@ -# Copyright 2016 F5 Networks Inc. +# Copyright 2016-2017 F5 Networks Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,15 +13,17 @@ # limitations under the License. # +import mock import sys -import mock +from neutron_lbaas.tests.unit.db.loadbalancer import test_db_loadbalancerv2 from neutron_lib import context -from neutron_lbaas.tests.unit.db.loadbalancer import test_db_loadbalancerv2 - with mock.patch.dict( - sys.modules, {'f5lbaasdriver': mock.Mock(__version__="0.1.1")}): + sys.modules, {'f5lbaasdriver': mock.Mock(__version__="1.0.0"), + 'f5lbaasdriver.v2': mock.Mock(), + 'f5lbaasdriver.v2.bigip': mock.Mock(), + 'f5lbaasdriver.v2.bigip.driver_v2': mock.Mock()}): from neutron_lbaas.drivers.f5 import driver_v2 @@ -117,3 +119,15 @@ class TestF5DriverV2(test_db_loadbalancerv2.LbaasPluginDbTestCase): self.driver.health_monitor, FakeModel("hm-01"), self.driver.f5.healthmonitor) + + def test_l7policy(self): + DriverTest(self, + self.driver.l7policy, + FakeModel("l7policy-01"), + self.driver.f5.l7policy) + + def test_l7rule(self): + DriverTest(self, + self.driver.l7rule, + FakeModel("l7rule-01"), + self.driver.f5.l7rule)