Merge "Only notify nova of port status changes if configured"

This commit is contained in:
Zuul 2019-09-16 18:20:02 +00:00 committed by Gerrit Code Review
commit 39035df0c2
2 changed files with 13 additions and 1 deletions

View File

@ -23,6 +23,7 @@ from neutron_lib.plugins import directory
from neutron_lib.plugins.ml2 import api
from neutron_lib import rpc as n_rpc
from neutron_lib.services.qos import constants as qos_consts
from oslo_config import cfg
from oslo_log import log
import oslo_messaging
from osprofiler import profiler
@ -289,7 +290,12 @@ class RpcCallbacks(type_tunnel.TunnelRpcCallbackMixin):
else:
if port.device_owner.startswith(
n_const.DEVICE_OWNER_COMPUTE_PREFIX):
plugin.nova_notifier.notify_port_active_direct(port)
# NOTE(haleyb): It is possible for a test to override a
# config option after the plugin has been initialized so
# the nova_notifier attribute is not set on the plugin.
if (cfg.CONF.notify_nova_on_port_status_changes and
hasattr(plugin, 'nova_notifier')):
plugin.nova_notifier.notify_port_active_direct(port)
return
else:
self.update_port_status_to_active(port, rpc_context, port_id, host)

View File

@ -250,6 +250,12 @@ class RpcCallbacksTestCase(base.BaseTestCase):
(self.plugin.nova_notifier.notify_port_active_direct.
assert_called_once_with(port))
def test_update_device_up_with_device_not_bound_to_host_no_notify(self):
cfg.CONF.set_override('notify_nova_on_port_status_changes', False)
self.assertIsNone(self._test_update_device_not_bound_to_host(
self.callbacks.update_device_up))
self.plugin.nova_notifier.notify_port_active_direct.assert_not_called()
def test_update_device_down_with_device_not_bound_to_host(self):
self.assertEqual(
{'device': 'fake_device', 'exists': True},