Merge "Support SB OVSDB connections to non-leader servers"
This commit is contained in:
commit
4e339776d9
|
@ -40,8 +40,13 @@ class MetadataAgentOvnSbIdl(ovsdb_monitor.OvnIdl):
|
|||
'SB_Global')
|
||||
for table in tables:
|
||||
helper.register_table(table)
|
||||
super(MetadataAgentOvnSbIdl, self).__init__(
|
||||
None, connection_string, helper)
|
||||
try:
|
||||
super(MetadataAgentOvnSbIdl, self).__init__(
|
||||
None, connection_string, helper, leader_only=False)
|
||||
except TypeError:
|
||||
# TODO(twilson) We can remove this when we require ovs>=2.12.0
|
||||
super(MetadataAgentOvnSbIdl, self).__init__(
|
||||
None, connection_string, helper)
|
||||
if chassis:
|
||||
for table in set(tables).intersection({'Chassis',
|
||||
'Chassis_Private'}):
|
||||
|
|
|
@ -561,9 +561,9 @@ class Ml2OvnIdlBase(connection.OvsdbIdl):
|
|||
|
||||
|
||||
class BaseOvnIdl(Ml2OvnIdlBase):
|
||||
def __init__(self, remote, schema):
|
||||
def __init__(self, remote, schema, **kwargs):
|
||||
self.notify_handler = row_event.RowEventHandler()
|
||||
super(BaseOvnIdl, self).__init__(remote, schema)
|
||||
super(BaseOvnIdl, self).__init__(remote, schema, **kwargs)
|
||||
|
||||
@classmethod
|
||||
def from_server(cls, connection_string, helper):
|
||||
|
@ -581,13 +581,18 @@ class BaseOvnSbIdl(Ml2OvnIdlBase):
|
|||
helper.register_table('Encap')
|
||||
helper.register_table('Port_Binding')
|
||||
helper.register_table('Datapath_Binding')
|
||||
return cls(connection_string, helper)
|
||||
# Used by MaintenanceWorker which can use ovsdb locking
|
||||
try:
|
||||
return cls(connection_string, helper, leader_only=True)
|
||||
except TypeError:
|
||||
# TODO(twilson) We can remove this when we require ovs>=2.12.0
|
||||
return cls(connection_string, helper)
|
||||
|
||||
|
||||
class OvnIdl(BaseOvnIdl):
|
||||
|
||||
def __init__(self, driver, remote, schema):
|
||||
super(OvnIdl, self).__init__(remote, schema)
|
||||
def __init__(self, driver, remote, schema, **kwargs):
|
||||
super(OvnIdl, self).__init__(remote, schema, **kwargs)
|
||||
self.driver = driver
|
||||
self.notify_handler = OvnDbNotifyHandler(driver)
|
||||
|
||||
|
@ -605,8 +610,8 @@ class OvnIdl(BaseOvnIdl):
|
|||
|
||||
class OvnIdlDistributedLock(BaseOvnIdl):
|
||||
|
||||
def __init__(self, driver, remote, schema):
|
||||
super(OvnIdlDistributedLock, self).__init__(remote, schema)
|
||||
def __init__(self, driver, remote, schema, **kwargs):
|
||||
super(OvnIdlDistributedLock, self).__init__(remote, schema, **kwargs)
|
||||
self.driver = driver
|
||||
self.notify_handler = OvnDbNotifyHandler(driver)
|
||||
self._node_uuid = self.driver.node_uuid
|
||||
|
@ -717,8 +722,8 @@ class OvnNbIdl(OvnIdlDistributedLock):
|
|||
|
||||
class OvnSbIdl(OvnIdlDistributedLock):
|
||||
|
||||
def __init__(self, driver, remote, schema):
|
||||
super(OvnSbIdl, self).__init__(driver, remote, schema)
|
||||
def __init__(self, driver, remote, schema, **kwargs):
|
||||
super(OvnSbIdl, self).__init__(driver, remote, schema, **kwargs)
|
||||
self.notify_handler.watch_events([
|
||||
ChassisAgentDeleteEvent(self.driver),
|
||||
ChassisAgentDownEvent(self.driver),
|
||||
|
@ -738,7 +743,11 @@ class OvnSbIdl(OvnIdlDistributedLock):
|
|||
helper.register_table('Datapath_Binding')
|
||||
helper.register_table('Connection')
|
||||
helper.register_columns('SB_Global', ['external_ids'])
|
||||
return cls(driver, connection_string, helper)
|
||||
try:
|
||||
return cls(driver, connection_string, helper, leader_only=False)
|
||||
except TypeError:
|
||||
# TODO(twilson) We can remove this when we require ovs>=2.12.0
|
||||
return cls(driver, connection_string, helper)
|
||||
|
||||
def post_connect(self):
|
||||
"""Watch Chassis events.
|
||||
|
|
Loading…
Reference in New Issue