Get default value for BFD/ECMP extra attributes from config

The default value for 'enable_default_route_bfd' and
'enable_default_route_ecmp' is configurable.

Ensure the default comes from configuration if a request to create
router does not contain a value for these attributes.

Partial-Bug: #2002687
Change-Id: I581f4c5e5cfa275f8a6f0adec405f205e877ac55
This commit is contained in:
Frode Nordahl 2023-08-29 08:18:10 +02:00
parent 452dd89ab0
commit 8219f3f61b
1 changed files with 9 additions and 3 deletions

View File

@ -36,6 +36,7 @@ from neutron_lib.exceptions import l3 as l3_exc
from neutron_lib.exceptions import l3_ext_gw_multihoming as mh_exc
from neutron_lib.plugins import constants as plugin_constants
from neutron_lib.plugins import directory
from oslo_config import cfg
def format_gateway_info(gw_port):
@ -79,11 +80,16 @@ class ExtraGatewaysDbOnlyMixin(l3_gwmode_db.L3_NAT_dbonly_mixin):
@registry.receives(resources.ROUTER, [events.PRECOMMIT_CREATE])
def _process_bfd_ecmp_request(self, resource, event, trigger, payload):
attr_defaults = {
l3_enable_default_route_ecmp.ENABLE_DEFAULT_ROUTE_ECMP: (
cfg.CONF.enable_default_route_ecmp),
l3_enable_default_route_bfd.ENABLE_DEFAULT_ROUTE_BFD: (
cfg.CONF.enable_default_route_bfd),
}
router = payload.latest_state
router_db = payload.metadata['router_db']
for attr in (l3_enable_default_route_ecmp.ENABLE_DEFAULT_ROUTE_ECMP,
l3_enable_default_route_bfd.ENABLE_DEFAULT_ROUTE_BFD):
value = router.get(attr)
for attr in attr_defaults.keys():
value = router.get(attr, attr_defaults[attr])
if value is not None:
self.set_extra_attr_value(router_db, attr, value)