163
def dvr_deletens_if_no_port(self, context, port_id):
163
def dvr_deletens_if_no_port(self, context, port_id, port_host=None):
164
164
"""Delete the DVR namespace if no dvr serviced port exists."""
165
165
admin_context = context.elevated()
166
166
router_ids = self.get_dvr_routers_by_portid(admin_context, port_id)
167
port_host = ml2_db.get_port_binding_host(admin_context.session,
168
port_host = ml2_db.get_port_binding_host(admin_context.session,
171
LOG.debug('Host name not found for port %s', port_id)
169
174
if not router_ids:
170
175
LOG.debug('No namespaces available for this DVR port %(port)s '
171
176
'on host %(host)s', {'port': port_id,
359
364
context, router['agent_id'], router['router_id'])
367
def _notify_l3_agent_port_update(resource, event, trigger, **kwargs):
368
new_port = kwargs.get('port')
369
original_port = kwargs.get('original_port')
371
if new_port and original_port:
372
original_device_owner = original_port.get('device_owner', '')
373
if (original_device_owner.startswith('compute') and
374
not new_port.get('device_owner')):
375
l3plugin = manager.NeutronManager.get_service_plugins().get(
376
service_constants.L3_ROUTER_NAT)
377
context = kwargs['context']
378
removed_routers = l3plugin.dvr_deletens_if_no_port(
381
port_host=original_port['binding:host_id'])
383
removed_router_args = {
385
'port': original_port,
386
'removed_routers': removed_routers,
389
event, resource, trigger, **removed_router_args)
392
_notify_l3_agent_new_port(resource, event, trigger, **kwargs)
363
396
registry.subscribe(
364
_notify_l3_agent_new_port, resources.PORT, events.AFTER_UPDATE)
397
_notify_l3_agent_port_update, resources.PORT, events.AFTER_UPDATE)
365
398
registry.subscribe(
366
399
_notify_l3_agent_new_port, resources.PORT, events.AFTER_CREATE)
367
400
registry.subscribe(