Merge "Fix setting table monitoring conditions" into stable/xena

This commit is contained in:
Zuul 2022-04-26 15:27:31 +00:00 committed by Gerrit Code Review
commit f0951d6ddd
3 changed files with 14 additions and 7 deletions

View File

@ -50,7 +50,7 @@ class MetadataAgentOvnSbIdl(ovsdb_monitor.OvnIdl):
if chassis:
for table in set(tables).intersection({'Chassis',
'Chassis_Private'}):
self.tables[table].condition = [['name', '==', chassis]]
self.set_table_condition(table, [['name', '==', chassis]])
if events:
self.notify_handler.watch_events(events)

View File

@ -23,6 +23,7 @@ from neutron_lib.utils import helpers
from oslo_config import cfg
from oslo_log import log
from oslo_utils import timeutils
from ovs.db import idl as ovs_idl_mod
from ovs.stream import Stream
from ovsdbapp.backend.ovs_idl import connection
from ovsdbapp.backend.ovs_idl import event as row_event
@ -693,6 +694,15 @@ class Ml2OvnIdlBase(connection.OvsdbIdl):
super(Ml2OvnIdlBase, self).__init__(
remote, schema, probe_interval=probe_interval, **kwargs)
def set_table_condition(self, table_name, condition):
# Prior to ovs commit 46d44cf3be0, self.cond_change() doesn't work here
# but after that commit, setting table.condtion doesn't work.
if hasattr(ovs_idl_mod, 'ConditionState'):
self.cond_change(table_name, condition)
else:
# Can be removed after the minimum ovs version >= 2.17.0
self.tables[table_name].condition = condition
class BaseOvnIdl(Ml2OvnIdlBase):
def __init__(self, remote, schema, **kwargs):
@ -909,11 +919,8 @@ class OvnInitPGNbIdl(OvnIdl):
def __init__(self, driver, remote, schema):
super(OvnInitPGNbIdl, self).__init__(driver, remote, schema)
# self.cond_change() doesn't work here because we are setting the
# condition *before an initial monitor request is made* so there is
# no previous session whose condition we wish to change
self.tables['Port_Group'].condition = [
['name', '==', ovn_const.OVN_DROP_PORT_GROUP_NAME]]
self.set_table_condition(
'Port_Group', [['name', '==', ovn_const.OVN_DROP_PORT_GROUP_NAME]])
self.neutron_pg_drop_event = NeutronPgDropPortGroupCreated(
timeout=ovn_conf.get_ovn_ovsdb_timeout())
self.notify_handler.watch_event(self.neutron_pg_drop_event)

View File

@ -46,7 +46,7 @@ osprofiler>=2.3.0 # Apache-2.0
os-ken>=2.0.0 # Apache-2.0
os-resource-classes>=1.1.0 # Apache-2.0
ovs>=2.10.0 # Apache-2.0
ovsdbapp>=1.11.0 # Apache-2.0
ovsdbapp>=1.12.1 # Apache-2.0
packaging>=20.4 # Apache-2.0
psutil>=5.3.0 # BSD
pyroute2>=0.6.4;sys_platform!='win32' # Apache-2.0 (+ dual licensed GPL2)