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
This commit is contained in:
jlongstaf 2017-07-14 08:25:45 -06:00 committed by Kien Nguyen
parent f32a0ec5bd
commit 4e2f6a81d8
2 changed files with 59 additions and 9 deletions

View File

@ -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)

View File

@ -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)