]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commitdiff
Replace oslo-incubator with oslo_context
authorYuriy Nesenenko <ynesenenko@mirantis.com>
Fri, 26 Dec 2014 10:00:52 +0000 (12:00 +0200)
committerYuriy Nesenenko <ynesenenko@mirantis.com>
Fri, 2 Jan 2015 13:18:10 +0000 (15:18 +0200)
Context currently being moved out of the incubator to a standalone project.

Change-Id: I4f25ed35a88f82ee934cc35872c66d7a38256408
Closes-Bug: #1210261

cinder/context.py
cinder/openstack/common/context.py [deleted file]
requirements.txt

index e1b16b4adaa500901e5921f350606287ffa9bcdc..b97180e8cf705d2db5fc2866783d62602abbab7a 100644 (file)
@@ -20,9 +20,9 @@
 import copy
 
 from oslo.utils import timeutils
+from oslo_context import context
 
 from cinder.i18n import _
-from cinder.openstack.common import context
 from cinder.openstack.common import local
 from cinder.openstack.common import log as logging
 from cinder import policy
@@ -66,10 +66,6 @@ class RequestContext(context.RequestContext):
                                              request_id=request_id)
         self.roles = roles or []
         self.project_name = project_name
-        if self.is_admin is None:
-            self.is_admin = policy.check_is_admin(self.roles)
-        elif self.is_admin and 'admin' not in self.roles:
-            self.roles.append('admin')
         self.read_deleted = read_deleted
         self.remote_address = remote_address
         if not timestamp:
@@ -90,6 +86,14 @@ class RequestContext(context.RequestContext):
             # if list is empty or none
             self.service_catalog = []
 
+        # We need to have RequestContext attributes defined
+        # when policy.check_is_admin invokes request logging
+        # to make it loggable.
+        if self.is_admin is None:
+            self.is_admin = policy.check_is_admin(self.roles)
+        elif self.is_admin and 'admin' not in self.roles:
+            self.roles.append('admin')
+
     def _get_read_deleted(self):
         return self._read_deleted
 
diff --git a/cinder/openstack/common/context.py b/cinder/openstack/common/context.py
deleted file mode 100644 (file)
index 1689890..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-# 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
-import uuid
-
-
-def generate_request_id():
-    return b'req-' + str(uuid.uuid4()).encode('ascii')
-
-
-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.
-    """
-
-    user_idt_format = '{user} {tenant} {domain} {user_domain} {p_domain}'
-
-    def __init__(self, auth_token=None, user=None, tenant=None, domain=None,
-                 user_domain=None, project_domain=None, is_admin=False,
-                 read_only=False, show_deleted=False, request_id=None,
-                 instance_uuid=None):
-        self.auth_token = auth_token
-        self.user = user
-        self.tenant = tenant
-        self.domain = domain
-        self.user_domain = user_domain
-        self.project_domain = project_domain
-        self.is_admin = is_admin
-        self.read_only = read_only
-        self.show_deleted = show_deleted
-        self.instance_uuid = instance_uuid
-        if not request_id:
-            request_id = generate_request_id()
-        self.request_id = request_id
-
-    def to_dict(self):
-        user_idt = (
-            self.user_idt_format.format(user=self.user or '-',
-                                        tenant=self.tenant or '-',
-                                        domain=self.domain or '-',
-                                        user_domain=self.user_domain or '-',
-                                        p_domain=self.project_domain or '-'))
-
-        return {'user': self.user,
-                'tenant': self.tenant,
-                'domain': self.domain,
-                'user_domain': self.user_domain,
-                'project_domain': self.project_domain,
-                '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,
-                'instance_uuid': self.instance_uuid,
-                'user_identity': user_idt}
-
-    @classmethod
-    def from_dict(cls, ctx):
-        return cls(
-            auth_token=ctx.get("auth_token"),
-            user=ctx.get("user"),
-            tenant=ctx.get("tenant"),
-            domain=ctx.get("domain"),
-            user_domain=ctx.get("user_domain"),
-            project_domain=ctx.get("project_domain"),
-            is_admin=ctx.get("is_admin", False),
-            read_only=ctx.get("read_only", False),
-            show_deleted=ctx.get("show_deleted", False),
-            request_id=ctx.get("request_id"),
-            instance_uuid=ctx.get("instance_uuid"))
-
-
-def get_admin_context(show_deleted=False):
-    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
-
-
-def is_user_context(context):
-    """Indicates if the request context is a normal user."""
-    if not context or context.is_admin:
-        return False
-    return context.user_id and context.project_id
index 5b60ae7522aea4ebf3411374ce9be9cab654de6a..949349422680250c66565aa4e10624f412f76619 100644 (file)
@@ -15,6 +15,7 @@ lxml>=2.3
 netaddr>=0.7.12
 oslo.config>=1.4.0  # Apache-2.0
 oslo.concurrency>=0.3.0  # Apache-2.0
+oslo.context>=0.1.0
 oslo.db>=1.1.0  # Apache-2.0
 oslo.messaging>=1.4.0,!=1.5.0
 oslo.rootwrap>=1.3.0