Merge "Improve DHCP agent's debug messages" into stable/rocky

This commit is contained in:
Zuul 2021-01-28 11:14:12 +00:00 committed by Gerrit Code Review
commit 9f2e07f551
1 changed files with 23 additions and 4 deletions

View File

@ -24,6 +24,7 @@ from neutron_lib import context
from neutron_lib import exceptions from neutron_lib import exceptions
from oslo_concurrency import lockutils from oslo_concurrency import lockutils
from oslo_config import cfg from oslo_config import cfg
from oslo_log import helpers as log_helpers
from oslo_log import log as logging from oslo_log import log as logging
import oslo_messaging import oslo_messaging
from oslo_service import loopingcall from oslo_service import loopingcall
@ -374,6 +375,7 @@ class DhcpAgent(manager.Manager):
self._queue.add(update) self._queue.add(update)
@_wait_if_syncing @_wait_if_syncing
@log_helpers.log_method_call
def _network_create(self, payload): def _network_create(self, payload):
network_id = payload['network']['id'] network_id = payload['network']['id']
self.enable_dhcp_helper(network_id) self.enable_dhcp_helper(network_id)
@ -388,6 +390,7 @@ class DhcpAgent(manager.Manager):
self._queue.add(update) self._queue.add(update)
@_wait_if_syncing @_wait_if_syncing
@log_helpers.log_method_call
def _network_update(self, payload): def _network_update(self, payload):
network_id = payload['network']['id'] network_id = payload['network']['id']
if payload['network']['admin_state_up']: if payload['network']['admin_state_up']:
@ -405,6 +408,7 @@ class DhcpAgent(manager.Manager):
self._queue.add(update) self._queue.add(update)
@_wait_if_syncing @_wait_if_syncing
@log_helpers.log_method_call
def _network_delete(self, payload): def _network_delete(self, payload):
network_id = payload['network_id'] network_id = payload['network_id']
self.disable_dhcp_helper(network_id) self.disable_dhcp_helper(network_id)
@ -419,6 +423,7 @@ class DhcpAgent(manager.Manager):
self._queue.add(update) self._queue.add(update)
@_wait_if_syncing @_wait_if_syncing
@log_helpers.log_method_call
def _subnet_update(self, payload): def _subnet_update(self, payload):
network_id = payload['subnet']['network_id'] network_id = payload['subnet']['network_id']
self.refresh_dhcp_helper(network_id) self.refresh_dhcp_helper(network_id)
@ -457,6 +462,7 @@ class DhcpAgent(manager.Manager):
self._queue.add(update) self._queue.add(update)
@_wait_if_syncing @_wait_if_syncing
@log_helpers.log_method_call
def _subnet_delete(self, payload): def _subnet_delete(self, payload):
network_id = self._get_network_lock_id(payload) network_id = self._get_network_lock_id(payload)
if not network_id: if not network_id:
@ -493,6 +499,7 @@ class DhcpAgent(manager.Manager):
self._queue.add(update) self._queue.add(update)
@_wait_if_syncing @_wait_if_syncing
@log_helpers.log_method_call
def _port_update(self, updated_port): def _port_update(self, updated_port):
if self.cache.is_port_message_stale(updated_port): if self.cache.is_port_message_stale(updated_port):
LOG.debug("Discarding stale port update: %s", updated_port) LOG.debug("Discarding stale port update: %s", updated_port)
@ -504,7 +511,8 @@ class DhcpAgent(manager.Manager):
self.reload_allocations(updated_port, network, prio=True) self.reload_allocations(updated_port, network, prio=True)
def reload_allocations(self, port, network, prio=False): def reload_allocations(self, port, network, prio=False):
LOG.info("Trigger reload_allocations for port %s", port) LOG.info("Trigger reload_allocations for port %s on network %s",
port, network)
driver_action = 'reload_allocations' driver_action = 'reload_allocations'
if self._is_port_on_this_agent(port): if self._is_port_on_this_agent(port):
orig = self.cache.get_port_by_id(port['id']) orig = self.cache.get_port_by_id(port['id'])
@ -551,6 +559,7 @@ class DhcpAgent(manager.Manager):
self._queue.add(update) self._queue.add(update)
@_wait_if_syncing @_wait_if_syncing
@log_helpers.log_method_call
def _port_create(self, created_port): def _port_create(self, created_port):
network = self.cache.get_network_by_id(created_port.network_id) network = self.cache.get_network_by_id(created_port.network_id)
if not network: if not network:
@ -565,9 +574,18 @@ class DhcpAgent(manager.Manager):
if (new_ips.intersection(cached_ips) and if (new_ips.intersection(cached_ips) and
(created_port['id'] != port_cached['id'] or (created_port['id'] != port_cached['id'] or
created_port['mac_address'] != port_cached['mac_address'])): created_port['mac_address'] != port_cached['mac_address'])):
self.schedule_resync("Duplicate IP addresses found, " resync_reason = (
"DHCP cache is out of sync", "Duplicate IP addresses found, "
created_port.network_id) "Port in cache: {cache_port_id}, "
"Created port: {port_id}, "
"IPs in cache: {cached_ips}, "
"new IPs: {new_ips}."
"DHCP cache is out of sync").format(
cache_port_id=port_cached['id'],
port_id=created_port['id'],
cached_ips=cached_ips,
new_ips=new_ips)
self.schedule_resync(resync_reason, created_port.network_id)
return return
self.reload_allocations(created_port, network, prio=True) self.reload_allocations(created_port, network, prio=True)
@ -584,6 +602,7 @@ class DhcpAgent(manager.Manager):
self._queue.add(update) self._queue.add(update)
@_wait_if_syncing @_wait_if_syncing
@log_helpers.log_method_call
def _port_delete(self, payload): def _port_delete(self, payload):
network_id = self._get_network_lock_id(payload) network_id = self._get_network_lock_id(payload)
if not network_id: if not network_id: