From 76b20882aa9fef3c693e45c2b504224a44e84ce8 Mon Sep 17 00:00:00 2001 From: Brian Haley Date: Tue, 22 Sep 2020 08:34:29 -0400 Subject: [PATCH] Fix the check for allowed_cidrs in listeners The allowed_cidrs value could be an empty list if the request involves the sdk, so change the check to account for that. Change-Id: I2df7e5a944cbd40c60943ad105f6e09f7afa85a9 Closes-bug: #1896603 --- ovn_octavia_provider/driver.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/ovn_octavia_provider/driver.py b/ovn_octavia_provider/driver.py index f8c3fc74..b1724c79 100644 --- a/ovn_octavia_provider/driver.py +++ b/ovn_octavia_provider/driver.py @@ -58,6 +58,16 @@ class OvnProviderDriver(driver_base.ProviderDriver): user_fault_string=msg, operator_fault_string=msg) + def _check_for_allowed_cidrs(self, allowed_cidrs): + # TODO(haleyb): add support for this + if isinstance(allowed_cidrs, o_datamodels.UnsetType): + allowed_cidrs = [] + if allowed_cidrs: + msg = _('OVN provider does not support allowed_cidrs option') + raise driver_exceptions.UnsupportedOptionError( + user_fault_string=msg, + operator_fault_string=msg) + def loadbalancer_create(self, loadbalancer): admin_state_up = loadbalancer.admin_state_up if isinstance(admin_state_up, o_datamodels.UnsetType): @@ -138,12 +148,8 @@ class OvnProviderDriver(driver_base.ProviderDriver): def listener_create(self, listener): self._check_for_supported_protocols(listener.protocol) - # TODO(haleyb): add support for this - if not isinstance(listener.allowed_cidrs, o_datamodels.UnsetType): - msg = _('OVN provider does not support allowed_cidrs option') - raise driver_exceptions.UnsupportedOptionError( - user_fault_string=msg, - operator_fault_string=msg) + self._check_for_allowed_cidrs(listener.allowed_cidrs) + admin_state_up = listener.admin_state_up if isinstance(admin_state_up, o_datamodels.UnsetType): admin_state_up = True @@ -167,12 +173,7 @@ class OvnProviderDriver(driver_base.ProviderDriver): self._ovn_helper.add_request(request) def listener_update(self, old_listener, new_listener): - # TODO(haleyb): add support for this - if not isinstance(new_listener.allowed_cidrs, o_datamodels.UnsetType): - msg = _('OVN provider does not support allowed_cidrs option') - raise driver_exceptions.UnsupportedOptionError( - user_fault_string=msg, - operator_fault_string=msg) + self._check_for_allowed_cidrs(new_listener.allowed_cidrs) request_info = {'id': new_listener.listener_id, 'loadbalancer_id': old_listener.loadbalancer_id,