From 8df6cbf831a647670adad287500287c068b5bbc2 Mon Sep 17 00:00:00 2001 From: Yossi Boaron Date: Wed, 19 Dec 2018 00:43:56 +0200 Subject: [PATCH] Drop Octavia providers supported protocols list Currently, Kuryr LBaaS driver maintains a list of supported protocols per Octavia provider. This list is used for optimizing listener creation flow (don't send a request to Octavia if the provider doesn't support this protocol). Since this list is actually an Octavia attribute, it will be more robust to delete this list from Kuryr and handle the corresponding exception in case specific protocol is not supported by Octavia provider. Change-Id: I94d6de873fc4d3bfafdfd591a15ba82fb4e38ec3 Closes-Bug: 1809049 --- .../controller/drivers/lbaasv2.py | 25 ----------------- .../unit/controller/drivers/test_lbaasv2.py | 28 ++----------------- 2 files changed, 3 insertions(+), 50 deletions(-) diff --git a/kuryr_kubernetes/controller/drivers/lbaasv2.py b/kuryr_kubernetes/controller/drivers/lbaasv2.py index e589b672b..65850f685 100644 --- a/kuryr_kubernetes/controller/drivers/lbaasv2.py +++ b/kuryr_kubernetes/controller/drivers/lbaasv2.py @@ -36,12 +36,6 @@ CONF = cfg.CONF LOG = logging.getLogger(__name__) _ACTIVATION_TIMEOUT = CONF.neutron_defaults.lbaas_activation_timeout - -_PROVIDER_SUPPORTED_LISTENER_PROT = { - 'amphora': ['HTTP', 'HTTPS', 'TCP', 'UDP'], - 'ovn': ['TCP', 'UDP'], - 'haproxy': ['HTTP', 'HTTPS', 'TCP']} - _L7_POLICY_ACT_REDIRECT_TO_POOL = 'REDIRECT_TO_POOL' # NOTE(yboaron):Prior to sending create request to Octavia, LBaaS driver # verifies that LB is in a stable state by polling LB's provisioning_status @@ -259,25 +253,6 @@ class LBaaSv2Driver(base.LBaaSDriver): def ensure_listener(self, loadbalancer, protocol, port, service_type='ClusterIP'): - - # NOTE(yboaron): Since retrieving Octavia capabilities/version is not - # supported via the OpenstackSdk, the list of allowed listener's - # protocols will be defined statically. - # Kuryr still need to handle the case in which listener's protocol - # (e.g: UDP) is not supported by Octavia. - provider = loadbalancer.provider or 'amphora' - try: - if protocol not in _PROVIDER_SUPPORTED_LISTENER_PROT[provider]: - LOG.info("Protocol: %(prot)s: is not supported by " - "%(provider)s", - {'prot': protocol, 'provider': provider}) - return None - except KeyError: - LOG.info("Provider %(provider)s doesnt exist in " - "_PROVIDER_SUPPORTED_LISTENER_PROT", - {'provider': provider}) - return None - name = "%s:%s:%s" % (loadbalancer.name, protocol, port) listener = obj_lbaas.LBaaSListener(name=name, project_id=loadbalancer.project_id, diff --git a/kuryr_kubernetes/tests/unit/controller/drivers/test_lbaasv2.py b/kuryr_kubernetes/tests/unit/controller/drivers/test_lbaasv2.py index 2eefb7e06..cba04eb38 100644 --- a/kuryr_kubernetes/tests/unit/controller/drivers/test_lbaasv2.py +++ b/kuryr_kubernetes/tests/unit/controller/drivers/test_lbaasv2.py @@ -98,25 +98,7 @@ class TestLBaaSv2Driver(test_base.TestCase): lbaas.lbaas_loadbalancer_path % loadbalancer.id, params={'cascade': True}) - def test_ensure_listener_tcp(self): - self._test_ensure_listener('TCP') - - def test_ensure_listener_udp(self): - self._test_ensure_listener('UDP') - - def test_ensure_listener_unsupported_protocol(self): - self._test_ensure_listener('NOT_SUPPORTED') - - def test_ensure_listener_ovn_tcp(self): - self._test_ensure_listener('TCP', 'ovn') - - def test_ensure_listener_ovn_udp(self): - self._test_ensure_listener('UDP', 'ovn') - - def test_ensure_listener_ovn_unsupported_protocol(self): - self._test_ensure_listener('HTTP', 'ovn') - - def _test_ensure_listener(self, protocol, provider=None): + def _test_ensure_listener(self): cls = d_lbaasv2.LBaaSv2Driver m_driver = mock.Mock(spec=d_lbaasv2.LBaaSv2Driver) expected_resp = mock.sentinel.expected_resp @@ -125,6 +107,8 @@ class TestLBaaSv2Driver(test_base.TestCase): subnet_id = 'D3FA400A-F543-4B91-9CD3-047AF0CE42D1' ip = '1.2.3.4' loadbalancer_id = '00EE9E11-91C2-41CF-8FD4-7970579E5C4C' + protocol = 'TCP' + provider = 'amphora' port = 1234 loadbalancer = obj_lbaas.LBaaSLoadBalancer( id=loadbalancer_id, name=name, project_id=project_id, @@ -135,12 +119,6 @@ class TestLBaaSv2Driver(test_base.TestCase): resp = cls.ensure_listener(m_driver, loadbalancer, protocol, port) - provider = loadbalancer.provider or 'amphora' - if (protocol not in - d_lbaasv2._PROVIDER_SUPPORTED_LISTENER_PROT[provider]): - self.assertIsNone(resp) - return - m_driver._ensure_provisioned.assert_called_once_with( loadbalancer, mock.ANY, m_driver._create_listener, m_driver._find_listener, d_lbaasv2._LB_STS_POLL_SLOW_INTERVAL)