Merge "Assignment sql backend create_grant refactoring"
This commit is contained in:
commit
f1d39c9704
@ -35,6 +35,21 @@ class AssignmentType(object):
|
||||
USER_DOMAIN = 'UserDomain'
|
||||
GROUP_DOMAIN = 'GroupDomain'
|
||||
|
||||
@classmethod
|
||||
def calculate_type(cls, user_id, group_id, project_id, domain_id):
|
||||
if user_id:
|
||||
if project_id:
|
||||
return cls.USER_PROJECT
|
||||
if domain_id:
|
||||
return cls.USER_DOMAIN
|
||||
if group_id:
|
||||
if project_id:
|
||||
return cls.GROUP_PROJECT
|
||||
if domain_id:
|
||||
return cls.GROUP_DOMAIN
|
||||
# Invalid parameters combination
|
||||
raise exception.AssignmentTypeCalculationError(**locals())
|
||||
|
||||
|
||||
class Assignment(keystone_assignment.Driver):
|
||||
|
||||
@ -120,27 +135,12 @@ class Assignment(keystone_assignment.Driver):
|
||||
domain_id=None, project_id=None,
|
||||
inherited_to_projects=False):
|
||||
|
||||
def calculate_type(user_id, group_id, project_id, domain_id):
|
||||
if user_id and project_id:
|
||||
return AssignmentType.USER_PROJECT
|
||||
elif user_id and domain_id:
|
||||
return AssignmentType.USER_DOMAIN
|
||||
elif group_id and project_id:
|
||||
return AssignmentType.GROUP_PROJECT
|
||||
elif group_id and domain_id:
|
||||
return AssignmentType.GROUP_DOMAIN
|
||||
else:
|
||||
message_data = ', '.join(
|
||||
[user_id, group_id, project_id, domain_id])
|
||||
raise exception.Error(message=_(
|
||||
'Unexpected combination of grant attributes - '
|
||||
'User, Group, Project, Domain: %s') % message_data)
|
||||
|
||||
type = calculate_type(user_id, group_id, project_id, domain_id)
|
||||
assignment_type = AssignmentType.calculate_type(
|
||||
user_id, group_id, project_id, domain_id)
|
||||
try:
|
||||
with sql.transaction() as session:
|
||||
session.add(RoleAssignment(
|
||||
type=type,
|
||||
type=assignment_type,
|
||||
actor_id=user_id or group_id,
|
||||
target_id=project_id or domain_id,
|
||||
role_id=role_id,
|
||||
|
@ -387,6 +387,13 @@ class MetadataFileError(UnexpectedError):
|
||||
message_format = _("Error while reading metadata file, %(reason)s")
|
||||
|
||||
|
||||
class AssignmentTypeCalculationError(UnexpectedError):
|
||||
message_format = _(
|
||||
'Unexpected combination of grant attributes - '
|
||||
'User: %(user_id)s, Group: %(group_id)s, Project: %(project_id)s, '
|
||||
'Domain: %(domain_id)s')
|
||||
|
||||
|
||||
class NotImplemented(Error):
|
||||
message_format = _("The action you have requested has not"
|
||||
" been implemented.")
|
||||
|
Loading…
Reference in New Issue
Block a user