Migrate to oslo.context

That's just a matter of adding requirements.txt entry, fixing imports,
and dropping the corresponding oslo-incubator module from the tree.

While at it, made all imports to import the module into 'oslo_context' and
not just 'context', so that we don't override the module locally in
multiple methods that receive their context arguments with the same
name, making the library inaccessible from inside those methods.

Change-Id: Ie62af970b3b7f225de453e56c01abc4b12af8f5e
Closes-Bug: #1401054
This commit is contained in:
Ihar Hrachyshka 2014-12-11 20:36:48 +01:00
parent daf7de66c4
commit 089e60a68b
11 changed files with 25 additions and 105 deletions

View File

@ -16,11 +16,11 @@
"""Context: context for security/db session."""
import copy
import datetime
from oslo_context import context as oslo_context
from neutron.db import api as db_api
from neutron.openstack.common import context as common_context
from neutron.openstack.common import local
from neutron.openstack.common import log as logging
from neutron import policy
@ -29,7 +29,7 @@ from neutron import policy
LOG = logging.getLogger(__name__)
class ContextBase(common_context.RequestContext):
class ContextBase(oslo_context.RequestContext):
"""Security context and request information.
Represents the user taking a given action within the system.

View File

@ -1,83 +0,0 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2011 OpenStack Foundation.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
"""
Simple class that stores security context information in the web request.
Projects should subclass this class if they wish to enhance the request
context or provide additional information in their specific WSGI pipeline.
"""
import itertools
from neutron.openstack.common import uuidutils
def generate_request_id():
return 'req-%s' % uuidutils.generate_uuid()
class RequestContext(object):
"""Helper class to represent useful information about a request context.
Stores information about the security context under which the user
accesses the system, as well as additional request information.
"""
def __init__(self, auth_token=None, user=None, tenant=None, is_admin=False,
read_only=False, show_deleted=False, request_id=None):
self.auth_token = auth_token
self.user = user
self.tenant = tenant
self.is_admin = is_admin
self.read_only = read_only
self.show_deleted = show_deleted
if not request_id:
request_id = generate_request_id()
self.request_id = request_id
def to_dict(self):
return {'user': self.user,
'tenant': self.tenant,
'is_admin': self.is_admin,
'read_only': self.read_only,
'show_deleted': self.show_deleted,
'auth_token': self.auth_token,
'request_id': self.request_id}
def get_admin_context(show_deleted="no"):
context = RequestContext(None,
tenant=None,
is_admin=True,
show_deleted=show_deleted)
return context
def get_context_from_function_and_args(function, args, kwargs):
"""Find an arg of type RequestContext and return it.
This is useful in a couple of decorators where we don't
know much about the function we're wrapping.
"""
for arg in itertools.chain(kwargs.values(), args):
if isinstance(arg, RequestContext):
return arg
return None

View File

@ -22,6 +22,7 @@
from oslo.config import cfg
from oslo import messaging
from oslo.utils import importutils
from oslo_context import context as oslo_context
from neutron.agent import securitygroups_rpc as sg_rpc
from neutron.api.rpc.agentnotifiers import dhcp_rpc_agent_api
@ -45,7 +46,6 @@ from neutron.db import portbindings_base
from neutron.db import securitygroups_rpc_base as sg_db_rpc
from neutron.extensions import portbindings
from neutron.extensions import securitygroup as ext_sg
from neutron.openstack.common import context
from neutron.i18n import _LE, _LI
from neutron.openstack.common import log as logging
from neutron.plugins.brocade.db import models as brocade_db
@ -228,7 +228,7 @@ class BrocadePluginV2(db_base_plugin_v2.NeutronDbPluginV2,
physical_interface)
self.base_binding_dict = self._get_base_binding_dict()
portbindings_base.register_port_dict_function()
self.ctxt = context.get_admin_context()
self.ctxt = oslo_context.get_admin_context()
self.ctxt.session = db.get_session()
self._vlan_bitmap = vbm.VlanBitmap(self.ctxt)
self._setup_rpc()
@ -253,7 +253,7 @@ class BrocadePluginV2(db_base_plugin_v2.NeutronDbPluginV2,
# RPC support
self.service_topics = {svc_constants.CORE: topics.PLUGIN,
svc_constants.L3_ROUTER_NAT: topics.L3PLUGIN}
self.rpc_context = context.RequestContext('neutron', 'neutron',
self.rpc_context = oslo_context.RequestContext('neutron', 'neutron',
is_admin=False)
self.conn = n_rpc.create_connection(new=True)
self.endpoints = [BridgeRpcCallbacks(),

View File

@ -18,8 +18,9 @@
Test vlans alloc/dealloc.
"""
from oslo_context import context as oslo_context
from neutron.db import api as db
from neutron.openstack.common import context
from neutron.plugins.brocade import vlanbm as vlan_bitmap
from neutron.tests.unit import testlib_api
@ -29,7 +30,7 @@ class TestVlanBitmap(testlib_api.SqlTestCase):
def setUp(self):
super(TestVlanBitmap, self).setUp()
self.context = context.get_admin_context()
self.context = oslo_context.get_admin_context()
self.context.session = db.get_session()
def test_vlan(self):

View File

@ -19,11 +19,12 @@ Unit Tests for hyperv neutron rpc
"""
import contextlib
import mock
from oslo_context import context as oslo_context
from neutron.agent import rpc as agent_rpc
from neutron.common import topics
from neutron.openstack.common import context
from neutron.plugins.hyperv import agent_notifier_api as ana
from neutron.plugins.hyperv.common import constants
from neutron.tests import base
@ -33,7 +34,7 @@ class rpcHyperVApiTestCase(base.BaseTestCase):
def _test_hyperv_neutron_api(
self, rpcapi, topic, method, rpc_method, **kwargs):
ctxt = context.RequestContext('fake_user', 'fake_project')
ctxt = oslo_context.RequestContext('fake_user', 'fake_project')
expected_retval = 'foo' if rpc_method == 'call' else None
expected_version = kwargs.pop('version', None)
fanout = kwargs.pop('fanout', False)

View File

@ -18,9 +18,9 @@
import mock
from oslo.config import cfg
from oslo.utils import importutils
from oslo_context import context as oslo_context
from neutron.db import api as db
from neutron.openstack.common import context
from neutron.openstack.common import log as logging
from neutron.tests.unit import test_l3_plugin
@ -44,7 +44,7 @@ class BrocadeSVIPlugin_TestCases(test_l3_plugin.TestL3NatBasePlugin):
LOG.info(_("rbridge id %s"), self._switch['rbridge_id'])
self._driver = mock.MagicMock()
self.context = context.get_admin_context()
self.context = oslo_context.get_admin_context()
self.context.session = db.get_session()
self.l3_plugin = importutils.import_object(L3_SVC_PLUGIN)
with mock.patch.object(self.l3_plugin,

View File

@ -21,12 +21,12 @@ import collections
import contextlib
import mock
from oslo_context import context as oslo_context
from neutron.agent import rpc as agent_rpc
from neutron.common import constants
from neutron.common import exceptions
from neutron.common import topics
from neutron.openstack.common import context
from neutron.plugins.ml2.drivers import type_tunnel
from neutron.plugins.ml2 import rpc as plugin_rpc
from neutron.tests import base
@ -166,7 +166,7 @@ class RpcCallbacksTestCase(base.BaseTestCase):
class RpcApiTestCase(base.BaseTestCase):
def _test_rpc_api(self, rpcapi, topic, method, rpc_method, **kwargs):
ctxt = context.RequestContext('fake_user', 'fake_project')
ctxt = oslo_context.RequestContext('fake_user', 'fake_project')
expected_retval = 'foo' if rpc_method == 'call' else None
expected_version = kwargs.pop('version', None)
fanout = kwargs.pop('fanout', False)

View File

@ -21,10 +21,10 @@ import contextlib
import mock
from oslo.config import cfg
from oslo_context import context as oslo_context
from neutron.agent import rpc as agent_rpc
from neutron.common import topics
from neutron.openstack.common import context
from neutron.plugins.mlnx import agent_notify_api
from neutron.tests import base
@ -32,7 +32,7 @@ from neutron.tests import base
class rpcApiTestCase(base.BaseTestCase):
def _test_mlnx_api(self, rpcapi, topic, method, rpc_method, **kwargs):
ctxt = context.RequestContext('fake_user', 'fake_project')
ctxt = oslo_context.RequestContext('fake_user', 'fake_project')
expected_retval = 'foo' if rpc_method == 'call' else None
expected_version = kwargs.pop('version', None)
fanout = kwargs.pop('fanout', False)

View File

@ -14,18 +14,19 @@
# under the License.
import contextlib
import mock
from oslo import messaging
from oslo_context import context as oslo_context
from neutron.agent import rpc
from neutron.openstack.common import context
from neutron.tests import base
class AgentRPCPluginApi(base.BaseTestCase):
def _test_rpc_call(self, method):
agent = rpc.PluginApi('fake_topic')
ctxt = context.RequestContext('fake_user', 'fake_project')
ctxt = oslo_context.RequestContext('fake_user', 'fake_project')
expect_val = 'foo'
with contextlib.nested(
mock.patch.object(agent.client, 'call'),
@ -50,7 +51,7 @@ class AgentRPCPluginApi(base.BaseTestCase):
def test_devices_details_list_unsupported(self):
agent = rpc.PluginApi('fake_topic')
ctxt = context.RequestContext('fake_user', 'fake_project')
ctxt = oslo_context.RequestContext('fake_user', 'fake_project')
expect_val_get_device_details = 'foo'
expect_val = [expect_val_get_device_details]
with contextlib.nested(
@ -86,7 +87,7 @@ class AgentPluginReportState(base.BaseTestCase):
mock_call, mock_cast, mock_prepare
):
mock_prepare.return_value = reportStateAPI.client
ctxt = context.RequestContext('fake_user', 'fake_project')
ctxt = oslo_context.RequestContext('fake_user', 'fake_project')
reportStateAPI.report_state(ctxt, expected_agent_state,
use_call=True)
self.assertEqual(mock_call.call_args[0][0], ctxt)
@ -107,7 +108,7 @@ class AgentPluginReportState(base.BaseTestCase):
mock_call, mock_cast, mock_prepare
):
mock_prepare.return_value = reportStateAPI.client
ctxt = context.RequestContext('fake_user', 'fake_project')
ctxt = oslo_context.RequestContext('fake_user', 'fake_project')
reportStateAPI.report_state(ctxt, expected_agent_state)
self.assertEqual(mock_cast.call_args[0][0], ctxt)
self.assertEqual(mock_cast.call_args[0][1], 'report_state')

View File

@ -1,7 +1,6 @@
[DEFAULT]
# The list of modules to copy from oslo-incubator.git
module=cache
module=context
module=eventlet_backdoor
module=fileutils
module=fixture

View File

@ -25,6 +25,7 @@ alembic>=0.6.4
six>=1.7.0
stevedore>=1.1.0 # Apache-2.0
oslo.config>=1.4.0 # Apache-2.0
oslo.context>=0.1.0 # Apache-2.0
oslo.db>=1.1.0 # Apache-2.0
oslo.i18n>=1.0.0 # Apache-2.0
oslo.messaging>=1.4.0,!=1.5.0