Revert "Config option to enable OVN IDL on other workers"

This reverts commit 66ac943b64.

Reason for revert: After discussions with the core reviewers for ML2/OVN
and Neutron folks about this configuration option we understood that we
should just enable RpcWorkers  to connect to the OVN database by default
and later allow rpc_workers to be set to 0 in Neutron (for those looking
for optimizations and that don't need RpcWorkers in their deployment). So
I am proposing a revert for this configuration option.

Change-Id: I73ba195401fff9f832b84633398816383f710b23
This commit is contained in:
Lucas Alvares Gomes 2021-07-14 15:38:20 +00:00
parent 66ac943b64
commit e71ba8d2d1
5 changed files with 2 additions and 95 deletions

View File

@ -197,13 +197,6 @@ ovn_opts = [
'or by checking the output of the following command: \n'
'ovs-appctl -t ovs-vswitchd dpif/show-dp-features '
'br-int | grep "Check pkt length action".')),
cfg.ListOpt('additional_worker_classes_with_ovn_idl',
default=[],
help=_('Additional worker classes to enable OVN IDLs for.\n'
'By default only the API and maintenance workers '
'have access to the IDL connections. List additional '
'worker classes here if necessary. You can use aliases '
'from neutron.worker_classes.')),
]
cfg.CONF.register_opts(ovn_opts, group='ovn')
@ -311,7 +304,3 @@ def is_ovn_emit_need_to_frag_enabled():
def is_igmp_snooping_enabled():
return cfg.CONF.OVS.igmp_snooping_enable
def additional_worker_classes_with_ovn_idl():
return cfg.CONF.ovn.additional_worker_classes_with_ovn_idl

View File

@ -33,7 +33,6 @@ from neutron_lib import context as n_context
from neutron_lib import exceptions as n_exc
from neutron_lib.plugins import directory
from neutron_lib.plugins.ml2 import api
from neutron_lib.utils import runtime
from oslo_config import cfg
from oslo_db import exception as os_db_exc
from oslo_log import log
@ -276,26 +275,8 @@ class OVNMechanismDriver(api.MechanismDriver):
@staticmethod
def should_post_fork_initialize(worker_class):
# By default only API and maintenace workers need to initialize
# the OVN IDL connections
if worker_class in (neutron.wsgi.WorkerService,
worker.MaintenanceWorker):
return True
# Configuration may allow other worker types to use IDL connections.
# Look for a match in additional_worker_classes_with_ovn_idl,
# gracefully skipping unknown classes in the config list.
for worker_type in ovn_conf.additional_worker_classes_with_ovn_idl():
try:
additional_class = runtime.load_class_by_alias_or_classname(
'neutron.worker_classes', worker_type)
if worker_class == additional_class:
return True
except ImportError:
# ignore unknown additional worker class
pass
return False
return worker_class in (neutron.wsgi.WorkerService,
worker.MaintenanceWorker)
def post_fork_initialize(self, resource, event, trigger, payload=None):
# Initialize API/Maintenance workers with OVN IDL connections

View File

@ -1977,56 +1977,6 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
expected_candidates = [ch0.name, ch2.name]
self.assertEqual(sorted(expected_candidates), sorted(candidates))
def _test_should_post_fork_initialize(self, enabled, disabled):
for worker_class in enabled:
self.assertTrue(
self.mech_driver.should_post_fork_initialize(worker_class))
for worker_class in disabled:
self.assertFalse(
self.mech_driver.should_post_fork_initialize(worker_class))
def test_should_post_fork_initialize_default(self):
enabled = (mech_driver.neutron.wsgi.WorkerService,
mech_driver.worker.MaintenanceWorker)
disabled = (mech_driver.neutron.service.AllServicesNeutronWorker,
mech_driver.neutron.service.RpcWorker)
self._test_should_post_fork_initialize(enabled, disabled)
def test_should_post_fork_initialize__allservices_worker(self):
ovn_conf.cfg.CONF.set_override(
'additional_worker_classes_with_ovn_idl',
['neutron.service.AllServicesNeutronWorker'],
group='ovn')
enabled = (mech_driver.neutron.wsgi.WorkerService,
mech_driver.worker.MaintenanceWorker,
mech_driver.neutron.service.AllServicesNeutronWorker)
disabled = (mech_driver.neutron.service.RpcWorker,)
self._test_should_post_fork_initialize(enabled, disabled)
def test_should_post_fork_initialize__rpc_workers(self):
ovn_conf.cfg.CONF.set_override(
'additional_worker_classes_with_ovn_idl',
['RpcWorker'],
group='ovn')
enabled = (mech_driver.neutron.wsgi.WorkerService,
mech_driver.worker.MaintenanceWorker,
mech_driver.neutron.service.RpcWorker)
disabled = (mech_driver.neutron.service.AllServicesNeutronWorker,)
self._test_should_post_fork_initialize(enabled, disabled)
def test_should_post_fork_initialize__bad_config(self):
# test that `should_post_fork_initialize` works even with
# unknown alias in additional_worker_classes_with_ovn_idl
ovn_conf.cfg.CONF.set_override(
'additional_worker_classes_with_ovn_idl',
['UnknownAlias'],
group='ovn')
enabled = (mech_driver.neutron.wsgi.WorkerService,
mech_driver.worker.MaintenanceWorker)
disabled = (mech_driver.neutron.service.AllServicesNeutronWorker,
mech_driver.neutron.service.RpcWorker)
self._test_should_post_fork_initialize(enabled, disabled)
class OVNMechanismDriverTestCase(test_plugin.Ml2PluginV2TestCase):
_mechanism_drivers = ['logger', 'ovn']

View File

@ -1,7 +0,0 @@
---
other:
- |
Added a new config option ``additional_worker_classes_with_ovn_idl``
to allow initialization of OVN IDL connections for additional worker
classes. Can be used for plugins or extensions that need IDL connections
for other worker classes than API and maintenance workers.

View File

@ -266,9 +266,3 @@ neutron.objects =
Trunk = neutron.objects.trunk:Trunk
neutron.status.upgrade.checks =
neutron = neutron.cmd.upgrade_checks.checks:CoreChecks
neutron.worker_classes =
APIWorker = neutron.wsgi:WorkerService
RpcWorker = neutron.service:RpcWorker
RpcReportsWorker = neutron.service:RpcReportsWorker
AllServicesNeutronWorker = neutron.service:AllServicesNeutronWorker
MaintenanceWorker = neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.worker:MaintenanceWorker