summaryrefslogtreecommitdiff
path: root/oslo_context
diff options
context:
space:
mode:
authorJamie Lennox <jamielennox@gmail.com>2017-08-28 11:43:55 +1000
committerJamie Lennox <jamielennox@gmail.com>2017-09-21 10:54:52 +1000
commitd78cf592e1e3e7aa0fc99bfdd655e82f5c44dfe3 (patch)
tree52981664782f6237ae21d637ab7657b999d8874c /oslo_context
parent8c7a18fc55c78d97b9bd7781261fd7ae2b69dd36 (diff)
downloadoslo-context-d78cf592e1e3e7aa0fc99bfdd655e82f5c44dfe3.tar.gz
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
Diffstat (limited to 'oslo_context')
-rw-r--r--oslo_context/context.py69
-rw-r--r--oslo_context/tests/test_context.py42
2 files changed, 67 insertions, 44 deletions
diff --git a/oslo_context/context.py b/oslo_context/context.py
index bfbd715..2a9ae8b 100644
--- a/oslo_context/context.py
+++ b/oslo_context/context.py
@@ -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)
diff --git a/oslo_context/tests/test_context.py b/oslo_context/tests/test_context.py
index e172ca2..8595975 100644
--- a/oslo_context/tests/test_context.py
+++ b/oslo_context/tests/test_context.py
@@ -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
-
- ctx = context.RequestContext(user=user,
- tenant=tenant,
- domain=domain,
- user_domain=user_domain,
- project_domain=project_domain)
+ 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_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))