Fix/Add : Identity V3 validate user role

HTTP status handling in Project class is now correct:
 - 204 if head() returns OK (User has Role) --> True
 - else --> False

Add this validate functionality to Identity v3 Proxy

Change-Id: I12862b229a462182bd303e8a0b20fb326e6b9bff
This commit is contained in:
B.Haleblian 2019-01-12 02:15:50 +01:00
parent 0b1adb8664
commit 47f9206590
2 changed files with 19 additions and 2 deletions

View File

@ -1148,3 +1148,20 @@ class Proxy(proxy.Proxy):
user = self._get_resource(_user.User, user)
role = self._get_resource(_role.Role, role)
project.unassign_role_from_user(self, user, role)
def validate_user_has_role(self, project, user, role):
"""Validates that a user has a role on a project
:param project: Either the ID of a project or a
:class:`~openstack.identity.v3.project.Project`
instance.
:param user: Either the ID of a user or a
:class:`~openstack.identity.v3.user.User` instance.
:param role: Either the ID of a role or a
:class:`~openstack.identity.v3.role.Role` instance.
:returns: True if user has role in project
"""
project = self._get_resource(_project.Project, project)
user = self._get_resource(_user.User, user)
role = self._get_resource(_role.Role, role)
return project.validate_user_has_role(self, user, role)

View File

@ -73,7 +73,7 @@ class Project(resource.Resource, resource.TagMixin):
url = utils.urljoin(self.base_path, self.id, 'users',
user.id, 'roles', role.id)
resp = session.head(url,)
if resp.status_code == 201:
if resp.status_code == 204:
return True
return False
@ -100,7 +100,7 @@ class Project(resource.Resource, resource.TagMixin):
url = utils.urljoin(self.base_path, self.id, 'groups',
group.id, 'roles', role.id)
resp = session.head(url,)
if resp.status_code == 201:
if resp.status_code == 204:
return True
return False