Merge "Topology: dispatch ovs port events directly"

This commit is contained in:
Zuul 2017-12-10 22:00:01 +00:00 committed by Gerrit Code Review
commit b4e823bb98
1 changed files with 34 additions and 20 deletions

View File

@ -63,26 +63,38 @@ class Topology(object):
@return : None
"""
LOG.info("Ovs port updated: %s", ovs_port)
if orig_ovs_port is None:
action = "added"
else:
action = 'updated'
port_type = ovs_port.type
if port_type not in _OVS_PORT_TYPES:
if ovs_port.type not in _OVS_PORT_TYPES:
LOG.info("Unmanaged port online: %s", ovs_port)
return
handler_name = '_' + port_type + '_port_' + action
try:
handler = getattr(self, handler_name, None)
if handler is not None:
handler(ovs_port)
if orig_ovs_port is None:
self._handle_ovs_port_added(ovs_port)
else:
self._handle_ovs_port_updated(ovs_port)
except Exception:
LOG.exception(
"Exception occurred when handling port online event")
def _handle_ovs_port_added(self, ovs_port):
port_type = ovs_port.type
if port_type == constants.OVS_VM_INTERFACE:
self._vm_port_added(ovs_port)
elif port_type == constants.OVS_TUNNEL_INTERFACE:
self._tunnel_port_added(ovs_port)
else:
LOG.warning('Invalid port type on %r', ovs_port)
def _handle_ovs_port_updated(self, ovs_port):
port_type = ovs_port.type
if port_type == constants.OVS_VM_INTERFACE:
self._vm_port_updated(ovs_port)
elif port_type == constants.OVS_TUNNEL_INTERFACE:
self._tunnel_port_updated(ovs_port)
else:
LOG.warning('Invalid port type on %r', ovs_port)
def ovs_port_deleted(self, ovs_port):
"""
Changes in ovs port status will be monitored by ovsdb monitor thread
@ -92,23 +104,25 @@ class Topology(object):
@param ovs_port:
@return : None
"""
port_type = ovs_port.type
if port_type not in _OVS_PORT_TYPES:
if ovs_port.type not in _OVS_PORT_TYPES:
LOG.info("Unmanaged port offline: %s", ovs_port)
return
handler_name = '_' + port_type + '_port_deleted'
try:
handler = getattr(self, handler_name, None)
if handler is not None:
handler(ovs_port)
else:
LOG.info("%s is None.", handler_name)
self._handle_ovs_port_deleted(ovs_port)
except Exception:
LOG.exception("Exception occurred when handling "
"ovs port offline event")
def _handle_ovs_port_deleted(self, ovs_port):
port_type = ovs_port.type
if port_type == constants.OVS_VM_INTERFACE:
self._vm_port_deleted(ovs_port)
elif port_type == constants.OVS_TUNNEL_INTERFACE:
self._tunnel_port_deleted(ovs_port)
else:
LOG.warning('Invalid port type on %r', ovs_port)
def _tunnel_port_added(self, ovs_port):
self._tunnel_port_updated(ovs_port)