Rename deprecated context params
The user, tenant and parameters without _id are deprecated as properties on the object however have never been deprecated as the argument that is passed. This should be a fairly easy transition from a context perspective so simply use the debtcollector function to rename them in place. Change-Id: Id6ae5a1c869b8e4279d0100bdb6dbf6790dd9b83
This commit is contained in:
parent
8c7a18fc55
commit
d78cf592e1
|
@ -27,12 +27,14 @@ or logging context.
|
|||
"""
|
||||
|
||||
import collections
|
||||
import functools
|
||||
import itertools
|
||||
import threading
|
||||
import uuid
|
||||
import warnings
|
||||
|
||||
import debtcollector
|
||||
from debtcollector import renames
|
||||
|
||||
|
||||
_request_store = threading.local()
|
||||
|
@ -42,13 +44,13 @@ _request_store = threading.local()
|
|||
_ENVIRON_HEADERS = {
|
||||
'auth_token': ['HTTP_X_AUTH_TOKEN',
|
||||
'HTTP_X_STORAGE_TOKEN'],
|
||||
'user': ['HTTP_X_USER_ID',
|
||||
'HTTP_X_USER'],
|
||||
'tenant': ['HTTP_X_PROJECT_ID',
|
||||
'HTTP_X_TENANT_ID',
|
||||
'HTTP_X_TENANT'],
|
||||
'user_domain': ['HTTP_X_USER_DOMAIN_ID'],
|
||||
'project_domain': ['HTTP_X_PROJECT_DOMAIN_ID'],
|
||||
'user_id': ['HTTP_X_USER_ID',
|
||||
'HTTP_X_USER'],
|
||||
'project_id': ['HTTP_X_PROJECT_ID',
|
||||
'HTTP_X_TENANT_ID',
|
||||
'HTTP_X_TENANT'],
|
||||
'user_domain_id': ['HTTP_X_USER_DOMAIN_ID'],
|
||||
'project_domain_id': ['HTTP_X_PROJECT_DOMAIN_ID'],
|
||||
'user_name': ['HTTP_X_USER_NAME'],
|
||||
'project_name': ['HTTP_X_PROJECT_NAME',
|
||||
'HTTP_X_TENANT_NAME'],
|
||||
|
@ -163,6 +165,12 @@ def _moved_property(new_name, old_name=None, target=None):
|
|||
return property(getter, setter, deleter)
|
||||
|
||||
|
||||
_renamed_kwarg = functools.partial(renames.renamed_kwarg,
|
||||
version='2.18',
|
||||
removal_version='3.0',
|
||||
replace=True)
|
||||
|
||||
|
||||
class RequestContext(object):
|
||||
|
||||
"""Helper class to represent useful information about a request context.
|
||||
|
@ -173,13 +181,18 @@ class RequestContext(object):
|
|||
|
||||
user_idt_format = u'{user} {tenant} {domain} {user_domain} {p_domain}'
|
||||
|
||||
@_renamed_kwarg('user', 'user_id')
|
||||
@_renamed_kwarg('tenant', 'project_id')
|
||||
@_renamed_kwarg('domain', 'domain_id')
|
||||
@_renamed_kwarg('user_domain', 'user_domain_id')
|
||||
@_renamed_kwarg('project_domain', 'project_domain_id')
|
||||
def __init__(self,
|
||||
auth_token=None,
|
||||
user=None,
|
||||
tenant=None,
|
||||
domain=None,
|
||||
user_domain=None,
|
||||
project_domain=None,
|
||||
user_id=None,
|
||||
project_id=None,
|
||||
domain_id=None,
|
||||
user_domain_id=None,
|
||||
project_domain_id=None,
|
||||
is_admin=False,
|
||||
read_only=False,
|
||||
show_deleted=False,
|
||||
|
@ -214,11 +227,11 @@ class RequestContext(object):
|
|||
:type is_admin_project: bool
|
||||
"""
|
||||
# setting to private variables to avoid triggering subclass properties
|
||||
self._user_id = user
|
||||
self._project_id = tenant
|
||||
self._domain_id = domain
|
||||
self._user_domain_id = user_domain
|
||||
self._project_domain_id = project_domain
|
||||
self._user_id = user_id
|
||||
self._project_id = project_id
|
||||
self._domain_id = domain_id
|
||||
self._user_domain_id = user_domain_id
|
||||
self._project_domain_id = project_domain_id
|
||||
|
||||
self.auth_token = auth_token
|
||||
self.user_name = user_name
|
||||
|
@ -349,14 +362,19 @@ class RequestContext(object):
|
|||
return self.global_request_id or self.request_id
|
||||
|
||||
@classmethod
|
||||
@_renamed_kwarg('user', 'user_id')
|
||||
@_renamed_kwarg('tenant', 'project_id')
|
||||
@_renamed_kwarg('domain', 'domain_id')
|
||||
@_renamed_kwarg('user_domain', 'user_domain_id')
|
||||
@_renamed_kwarg('project_domain', 'project_domain_id')
|
||||
def from_dict(cls, values, **kwargs):
|
||||
"""Construct a context object from a provided dictionary."""
|
||||
kwargs.setdefault('auth_token', values.get('auth_token'))
|
||||
kwargs.setdefault('user', values.get('user'))
|
||||
kwargs.setdefault('tenant', values.get('tenant'))
|
||||
kwargs.setdefault('domain', values.get('domain'))
|
||||
kwargs.setdefault('user_domain', values.get('user_domain'))
|
||||
kwargs.setdefault('project_domain', values.get('project_domain'))
|
||||
kwargs.setdefault('user_id', values.get('user'))
|
||||
kwargs.setdefault('project_id', values.get('tenant'))
|
||||
kwargs.setdefault('domain_id', values.get('domain'))
|
||||
kwargs.setdefault('user_domain_id', values.get('user_domain'))
|
||||
kwargs.setdefault('project_domain_id', values.get('project_domain'))
|
||||
kwargs.setdefault('is_admin', values.get('is_admin', False))
|
||||
kwargs.setdefault('read_only', values.get('read_only', False))
|
||||
kwargs.setdefault('show_deleted', values.get('show_deleted', False))
|
||||
|
@ -375,6 +393,11 @@ class RequestContext(object):
|
|||
return cls(**kwargs)
|
||||
|
||||
@classmethod
|
||||
@_renamed_kwarg('user', 'user_id')
|
||||
@_renamed_kwarg('tenant', 'project_id')
|
||||
@_renamed_kwarg('domain', 'domain_id')
|
||||
@_renamed_kwarg('user_domain', 'user_domain_id')
|
||||
@_renamed_kwarg('project_domain', 'project_domain_id')
|
||||
def from_environ(cls, environ, **kwargs):
|
||||
"""Load a context object from a request environment.
|
||||
|
||||
|
@ -421,7 +444,7 @@ class RequestContext(object):
|
|||
def get_admin_context(show_deleted=False):
|
||||
"""Create an administrator context."""
|
||||
context = RequestContext(None,
|
||||
tenant=None,
|
||||
project_id=None,
|
||||
is_admin=True,
|
||||
show_deleted=show_deleted,
|
||||
overwrite=False)
|
||||
|
|
|
@ -592,33 +592,33 @@ class ContextTest(test_base.BaseTestCase):
|
|||
self.assertIn(key, str(w[0].message))
|
||||
|
||||
def test_deprecated_args(self):
|
||||
user = uuid.uuid4().hex
|
||||
tenant = uuid.uuid4().hex
|
||||
domain = uuid.uuid4().hex
|
||||
user_domain = uuid.uuid4().hex
|
||||
project_domain = uuid.uuid4().hex
|
||||
user_id = uuid.uuid4().hex
|
||||
project_id = uuid.uuid4().hex
|
||||
domain_id = uuid.uuid4().hex
|
||||
user_domain_id = uuid.uuid4().hex
|
||||
project_domain_id = uuid.uuid4().hex
|
||||
|
||||
ctx = context.RequestContext(user=user,
|
||||
tenant=tenant,
|
||||
domain=domain,
|
||||
user_domain=user_domain,
|
||||
project_domain=project_domain)
|
||||
ctx = context.RequestContext(user_id=user_id,
|
||||
project_id=project_id,
|
||||
domain_id=domain_id,
|
||||
user_domain_id=user_domain_id,
|
||||
project_domain_id=project_domain_id)
|
||||
|
||||
self.assertEqual(0, len(self.warnings))
|
||||
self.assertEqual(user, ctx.user_id)
|
||||
self.assertEqual(tenant, ctx.project_id)
|
||||
self.assertEqual(domain, ctx.domain_id)
|
||||
self.assertEqual(user_domain, ctx.user_domain_id)
|
||||
self.assertEqual(project_domain, ctx.project_domain_id)
|
||||
self.assertEqual(user_id, ctx.user_id)
|
||||
self.assertEqual(project_id, ctx.project_id)
|
||||
self.assertEqual(domain_id, ctx.domain_id)
|
||||
self.assertEqual(user_domain_id, ctx.user_domain_id)
|
||||
self.assertEqual(project_domain_id, ctx.project_domain_id)
|
||||
|
||||
self.assertEqual(0, len(self.warnings))
|
||||
self.assertEqual(user, ctx.user)
|
||||
self.assertEqual(user_id, ctx.user)
|
||||
self.assertEqual(1, len(self.warnings))
|
||||
self.assertEqual(tenant, ctx.tenant)
|
||||
self.assertEqual(project_id, ctx.tenant)
|
||||
self.assertEqual(2, len(self.warnings))
|
||||
self.assertEqual(domain, ctx.domain)
|
||||
self.assertEqual(domain_id, ctx.domain)
|
||||
self.assertEqual(3, len(self.warnings))
|
||||
self.assertEqual(user_domain, ctx.user_domain)
|
||||
self.assertEqual(user_domain_id, ctx.user_domain)
|
||||
self.assertEqual(4, len(self.warnings))
|
||||
self.assertEqual(project_domain, ctx.project_domain)
|
||||
self.assertEqual(project_domain_id, ctx.project_domain)
|
||||
self.assertEqual(5, len(self.warnings))
|
||||
|
|
Loading…
Reference in New Issue