Remove assignment proxy methods/controllers

Assignment proxy methods and controllers are removed as of Juno.

Change-Id: I661a8b871884979dc9f046e6d98dd4eadca4ba11
bp: removed-as-of-juno
This commit is contained in:
Morgan Fainberg 2014-03-26 14:02:10 -07:00
parent 6ddd530637
commit 9ad8037310
2 changed files with 0 additions and 228 deletions

View File

@ -15,82 +15,20 @@
"""Workflow Logic the Identity service."""
import functools
import inspect
import six
import uuid
from keystone.assignment import controllers as assignment_controllers
from keystone.common import controller
from keystone.common import dependency
from keystone import config
from keystone import exception
from keystone.openstack.common.gettextutils import _
from keystone.openstack.common import log
from keystone.openstack.common import versionutils
CONF = config.CONF
LOG = log.getLogger(__name__)
class DeprecatedMeta(type):
"""Metaclass that ensures that the correct methods on the deprecated
classes are reported as deprecated on call.
"""
@staticmethod
def moved_to_assignment(class_name):
# NOTE(morganfainberg): wrapper for versionutils.deprecated decorator
# with some values populated specifically for the migration for
# controllers from identity to assignment.
def inner(f):
subst = {'cls_name': class_name, 'meth_name': f.__name__}
what = 'identity.controllers.%(cls_name)s.%(meth_name)s' % subst
favor = 'assignment.controllers.%(cls_name)s.%(meth_name)s' % subst
deprecated = versionutils.deprecated(
versionutils.deprecated.ICEHOUSE,
what=what,
in_favor_of=favor,
remove_in=+1)
return deprecated(f)
return inner
@staticmethod
def _is_wrappable(item):
# NOTE(morganfainberg): Wrapping non-callables, non-methods, and
# builtins is not the point of the deprecation warnings. Simple test
# to ensure the item is one of the types that should be wrapped.
if (callable(item) and
inspect.ismethod(item) and
not inspect.isbuiltin(item)):
return True
return False
def __new__(mcs, class_name, bases, namespace):
def get_attribute(self, item):
# NOTE(morganfainberg): This implementation of __getattribute__
# is automatically added to any classes using the DeprecatedMeta
# metaclass. This will apply the moved_to_assignment wrapper to
# method calls (inherited or direct).
attr = super(bases[0], self).__getattribute__(item)
if DeprecatedMeta._is_wrappable(attr):
return DeprecatedMeta.moved_to_assignment(class_name)(attr)
return attr
namespace['__getattribute__'] = get_attribute
return type.__new__(mcs, class_name, bases, namespace)
def __getattribute__(cls, item):
# NOTE(morganfainberg): This implementation of __getattribute__ catches
# non-instantiated calls to @classmethods.
attr = type.__getattribute__(cls, item)
if DeprecatedMeta._is_wrappable(attr):
if (issubclass(cls, controller.V3Controller) and
DeprecatedMeta._is_wrappable(attr)):
attr = DeprecatedMeta.moved_to_assignment(cls.__name__)(attr)
return attr
@dependency.requires('assignment_api', 'identity_api')
class User(controller.V2Controller):
@ -421,34 +359,3 @@ class GroupV3(controller.V3Controller):
def delete_group(self, context, group_id):
domain_id = self._get_domain_id_for_request(context)
self.identity_api.delete_group(group_id, domain_scope=domain_id)
# TODO(morganfainberg): Remove proxy compat classes once Icehouse is released.
@six.add_metaclass(DeprecatedMeta)
class Tenant(assignment_controllers.Tenant):
pass
@six.add_metaclass(DeprecatedMeta)
class Role(assignment_controllers.Role):
pass
@six.add_metaclass(DeprecatedMeta)
class DomainV3(assignment_controllers.DomainV3):
pass
@six.add_metaclass(DeprecatedMeta)
class ProjectV3(assignment_controllers.ProjectV3):
pass
@six.add_metaclass(DeprecatedMeta)
class RoleV3(assignment_controllers.RoleV3):
pass
@six.add_metaclass(DeprecatedMeta)
class RoleAssignmentV3(assignment_controllers.RoleAssignmentV3):
pass

View File

@ -31,7 +31,6 @@ from keystone import notifications
from keystone.openstack.common.gettextutils import _
from keystone.openstack.common import importutils
from keystone.openstack.common import log
from keystone.openstack.common import versionutils
CONF = config.CONF
@ -43,15 +42,6 @@ DOMAIN_CONF_FHEAD = 'keystone.'
DOMAIN_CONF_FTAIL = '.conf'
def moved_to_assignment(f):
name = f.__name__
deprecated = versionutils.deprecated(versionutils.deprecated.ICEHOUSE,
what="identity_api." + name,
in_favor_of="assignment_api." + name,
remove_in=+1)
return deprecated(f)
def filter_user(user_ref):
"""Filter out private items in a user dict.
@ -498,131 +488,6 @@ class Manager(manager.Manager):
update_dict = {'password': new_password}
self.update_user(user_id, update_dict, domain_scope=domain_scope)
# TODO(morganfainberg): Remove the following deprecated methods once
# Icehouse is released. Maintain identity -> assignment proxy for 1
# release.
@moved_to_assignment
def get_domain_by_name(self, domain_name):
return self.assignment_api.get_domain_by_name(domain_name)
@moved_to_assignment
def get_domain(self, domain_id):
return self.assignment_api.get_domain(domain_id)
@moved_to_assignment
def update_domain(self, domain_id, domain):
return self.assignment_api.update_domain(domain_id, domain)
@moved_to_assignment
def list_domains(self, hints=None):
return self.assignment_api.list_domains(hints=hints)
@moved_to_assignment
def delete_domain(self, domain_id):
return self.assignment_api.delete_domain(domain_id)
@moved_to_assignment
def create_domain(self, domain_id, domain):
return self.assignment_api.create_domain(domain_id, domain)
@moved_to_assignment
def list_projects_for_user(self, user_id):
return self.assignment_api.list_projects_for_user(user_id)
@moved_to_assignment
def add_user_to_project(self, tenant_id, user_id):
return self.assignment_api.add_user_to_project(tenant_id, user_id)
@moved_to_assignment
def remove_user_from_project(self, tenant_id, user_id):
return self.assignment_api.remove_user_from_project(tenant_id, user_id)
@moved_to_assignment
def get_project(self, tenant_id):
return self.assignment_api.get_project(tenant_id)
@moved_to_assignment
def list_projects(self, hints=None):
return self.assignment_api.list_projects(hints=hints)
@moved_to_assignment
def get_role(self, role_id):
return self.assignment_api.get_role(role_id)
@moved_to_assignment
def list_roles(self, hints=None):
return self.assignment_api.list_roles(hints=hints)
@moved_to_assignment
def get_project_users(self, tenant_id):
return self.assignment_api.get_project_users(tenant_id)
@moved_to_assignment
def get_roles_for_user_and_project(self, user_id, tenant_id):
return self.assignment_api.get_roles_for_user_and_project(
user_id, tenant_id)
@moved_to_assignment
def get_roles_for_user_and_domain(self, user_id, domain_id):
return (self.assignment_api.get_roles_for_user_and_domain
(user_id, domain_id))
@moved_to_assignment
def add_role_to_user_and_project(self, user_id,
tenant_id, role_id):
return (self.assignment_api.add_role_to_user_and_project
(user_id, tenant_id, role_id))
@moved_to_assignment
def create_role(self, role_id, role):
return self.assignment_api.create_role(role_id, role)
@moved_to_assignment
def delete_role(self, role_id):
return self.assignment_api.delete_role(role_id)
@moved_to_assignment
def remove_role_from_user_and_project(self, user_id,
tenant_id, role_id):
return (self.assignment_api.remove_role_from_user_and_project
(user_id, tenant_id, role_id))
@moved_to_assignment
def update_role(self, role_id, role):
return self.assignment_api.update_role(role_id, role)
@moved_to_assignment
def create_grant(self, role_id, user_id=None, group_id=None,
domain_id=None, project_id=None,
inherited_to_projects=False):
return (self.assignment_api.create_grant
(role_id, user_id, group_id, domain_id, project_id,
inherited_to_projects))
@moved_to_assignment
def list_grants(self, user_id=None, group_id=None,
domain_id=None, project_id=None,
inherited_to_projects=False):
return (self.assignment_api.list_grants
(user_id, group_id, domain_id, project_id,
inherited_to_projects))
@moved_to_assignment
def get_grant(self, role_id, user_id=None, group_id=None,
domain_id=None, project_id=None,
inherited_to_projects=False):
return (self.assignment_api.get_grant
(role_id, user_id, group_id, domain_id, project_id,
inherited_to_projects))
@moved_to_assignment
def delete_grant(self, role_id, user_id=None, group_id=None,
domain_id=None, project_id=None,
inherited_to_projects=False):
return (self.assignment_api.delete_grant
(role_id, user_id, group_id, domain_id, project_id,
inherited_to_projects))
@six.add_metaclass(abc.ABCMeta)
class Driver(object):