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:
parent
6ddd530637
commit
9ad8037310
@ -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
|
||||
|
@ -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):
|
||||
|
Loading…
Reference in New Issue
Block a user