Propagate bridge update notification request
Make sure that when br-ex mac address is changed we rewrite related openflow rules. Change-Id: Ie89b04ef6e396a379f675d1da567889326ce51f5
This commit is contained in:
parent
4b14c28d13
commit
c60c5f959f
@ -270,6 +270,9 @@ class DfLocalController(object):
|
||||
self.open_flow_app.notify_remove_remote_port(lport)
|
||||
self.db_store.delete_port(lport.get_id(), False)
|
||||
|
||||
def bridge_port_updated(self, lport):
|
||||
self.open_flow_app.notify_update_bridge_port(lport)
|
||||
|
||||
def router_updated(self, lrouter):
|
||||
old_lrouter = self.db_store.get_router(lrouter.get_id())
|
||||
if old_lrouter is None:
|
||||
|
@ -362,6 +362,16 @@ class DNATApp(DFlowApp):
|
||||
if floatingip.get_lport_id() == port_id:
|
||||
self.disassociate_floatingip(floatingip)
|
||||
|
||||
def update_bridge_port(self, lport):
|
||||
port_name = lport.get_name()
|
||||
if port_name != self.external_network_bridge:
|
||||
return
|
||||
mac = self._check_for_external_network_bridge_mac()
|
||||
if not mac:
|
||||
return
|
||||
for key, floatingip in six.iteritems(self.local_floatingips):
|
||||
self._install_dnat_egress_rules(floatingip, mac)
|
||||
|
||||
def delete_floatingip(self, floatingip):
|
||||
self._remove_ingress_nat_rules(floatingip)
|
||||
self._remove_egress_nat_rules(floatingip)
|
||||
|
@ -103,6 +103,9 @@ class RyuDFAdapter(OFPHandler):
|
||||
def notify_remove_remote_port(self, lport=None):
|
||||
self.dispatcher.dispatch('remove_remote_port', lport=lport)
|
||||
|
||||
def notify_update_bridge_port(self, lport=None):
|
||||
self.dispatcher.dispatch('update_bridge_port', lport=lport)
|
||||
|
||||
def notify_add_router_port(self, router=None, router_port=None,
|
||||
local_network_id=None):
|
||||
self.dispatcher.dispatch('add_router_port', router=router,
|
||||
|
@ -49,7 +49,6 @@ class Topology(object):
|
||||
@param ovs_port:
|
||||
@return : None
|
||||
"""
|
||||
|
||||
if ovs_port is None:
|
||||
LOG.error(_LE("ovs_port is None"))
|
||||
return
|
||||
@ -156,6 +155,16 @@ class Topology(object):
|
||||
LOG.exception(_LE('Failed to process logical port online '
|
||||
'event: %s') % str(lport))
|
||||
|
||||
def _bridge_port_added(self, ovs_port):
|
||||
self._bridge_port_updated(ovs_port)
|
||||
|
||||
def _bridge_port_updated(self, ovs_port):
|
||||
try:
|
||||
self.controller.bridge_port_updated(ovs_port)
|
||||
except Exception:
|
||||
LOG.exception(_LE('Failed to process bridge port online '
|
||||
'event: %s') % str(ovs_port))
|
||||
|
||||
def _vm_port_deleted(self, ovs_port):
|
||||
ovs_port_id = ovs_port.get_id()
|
||||
lport_id = ovs_port.get_iface_id()
|
||||
|
@ -417,9 +417,11 @@ class OvsdbMonitor(object):
|
||||
super(OvsdbMonitor, self).__init__()
|
||||
self.nb_api = nb_api
|
||||
self.idl = idl
|
||||
self.interface_type = (constants.OVS_VM_INTERFACE,
|
||||
constants.OVS_BRIDGE_INTERFACE)
|
||||
|
||||
def _is_handle_interface_update(self, interface):
|
||||
if interface.type != constants.OVS_VM_INTERFACE:
|
||||
if interface.type not in self.interface_type:
|
||||
return False
|
||||
if interface.name.startswith('qg'):
|
||||
return False
|
||||
|
Loading…
Reference in New Issue
Block a user