Merge "Generate new context for each DHCP RPC call"

This commit is contained in:
Jenkins
2016-08-31 10:18:12 +00:00
committed by Gerrit Code Review
2 changed files with 13 additions and 8 deletions

View File

@@ -58,8 +58,7 @@ class DhcpAgent(manager.Manager):
self.conf = conf or cfg.CONF
self.cache = NetworkCache()
self.dhcp_driver_cls = importutils.import_class(self.conf.dhcp_driver)
ctx = context.get_admin_context_without_session()
self.plugin_rpc = DhcpPluginApi(topics.PLUGIN, ctx, self.conf.host)
self.plugin_rpc = DhcpPluginApi(topics.PLUGIN, self.conf.host)
# create dhcp dir to store dhcp info
dhcp_dir = os.path.dirname("/%s/dhcp/" % self.conf.state_path)
utils.ensure_dir(dhcp_dir)
@@ -467,8 +466,7 @@ class DhcpPluginApi(object):
"""
def __init__(self, topic, context, host):
self.context = context
def __init__(self, topic, host):
self.host = host
target = oslo_messaging.Target(
topic=topic,
@@ -476,6 +474,15 @@ class DhcpPluginApi(object):
version='1.0')
self.client = n_rpc.get_client(target)
@property
def context(self):
# TODO(kevinbenton): the context should really be passed in to each of
# these methods so a call can be tracked all of the way through the
# system but that will require a larger refactor to pass the context
# everywhere. We just generate a new one here on each call so requests
# can be independently tracked server side.
return context.get_admin_context_without_session()
def get_active_networks_info(self):
"""Make a remote process call to retrieve all network info."""
cctxt = self.client.prepare(version='1.1')

View File

@@ -35,7 +35,6 @@ from neutron.common import config as common_config
from neutron.common import constants as n_const
from neutron.common import utils
from neutron.conf.agent import dhcp as dhcp_config
from neutron import context
from neutron.tests import base
@@ -1087,8 +1086,7 @@ class TestDhcpAgentEventHandler(base.BaseTestCase):
class TestDhcpPluginApiProxy(base.BaseTestCase):
def _test_dhcp_api(self, method, **kwargs):
ctxt = context.get_admin_context()
proxy = dhcp_agent.DhcpPluginApi('foo', ctxt, host='foo')
proxy = dhcp_agent.DhcpPluginApi('foo', host='foo')
with mock.patch.object(proxy.client, 'call') as rpc_mock,\
mock.patch.object(proxy.client, 'prepare') as prepare_mock:
@@ -1104,7 +1102,7 @@ class TestDhcpPluginApiProxy(base.BaseTestCase):
prepare_mock.assert_called_once_with(**prepare_args)
kwargs['host'] = proxy.host
rpc_mock.assert_called_once_with(ctxt, method, **kwargs)
rpc_mock.assert_called_once_with(mock.ANY, method, **kwargs)
def test_get_active_networks_info(self):
self._test_dhcp_api('get_active_networks_info', version='1.1')