From 9021d5114e82e272d67ba365bd09b1c607971230 Mon Sep 17 00:00:00 2001 From: "B.Haleblian" Date: Sat, 12 Jan 2019 16:49:36 +0100 Subject: [PATCH] implement identity v3 Proxy group role management identity/v3/_proxy.py handles CVD of project group roles assignments this patchset proxies following Project class methods - unassign_project_role_from_group(project,group,role) - assign_project_role_to_group(project,group,role) - validate_group_has_role(project,group,role) Fix no known issue; just adds functionality Change-Id: I48855a112bb2c46c3aeeb00255b4d8479f0750da --- openstack/identity/v3/_proxy.py | 51 +++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/openstack/identity/v3/_proxy.py b/openstack/identity/v3/_proxy.py index 66ba8dbd9..f922ba587 100644 --- a/openstack/identity/v3/_proxy.py +++ b/openstack/identity/v3/_proxy.py @@ -1165,3 +1165,54 @@ class Proxy(proxy.Proxy): user = self._get_resource(_user.User, user) role = self._get_resource(_role.Role, role) return project.validate_user_has_role(self, user, role) + + def assign_project_role_to_group(self, project, group, role): + """Assign role to group on a project + + :param project: Either the ID of a project or a + :class:`~openstack.identity.v3.project.Project` + instance. + :param group: Either the ID of a group or a + :class:`~openstack.identity.v3.group.Group` instance. + :param role: Either the ID of a role or a + :class:`~openstack.identity.v3.role.Role` instance. + :return: ``None`` + """ + project = self._get_resource(_project.Project, project) + group = self._get_resource(_group.Group, group) + role = self._get_resource(_role.Role, role) + project.assign_role_to_group(self, group, role) + + def unassign_project_role_from_group(self, project, group, role): + """Unassign role from group on a project + + :param project: Either the ID of a project or a + :class:`~openstack.identity.v3.project.Project` + instance. + :param group: Either the ID of a group or a + :class:`~openstack.identity.v3.group.Group` instance. + :param role: Either the ID of a role or a + :class:`~openstack.identity.v3.role.Role` instance. + :return: ``None`` + """ + project = self._get_resource(_project.Project, project) + group = self._get_resource(_group.Group, group) + role = self._get_resource(_role.Role, role) + project.unassign_role_from_group(self, group, role) + + def validate_group_has_role(self, project, group, role): + """Validates that a group has a role on a project + + :param project: Either the ID of a project or a + :class:`~openstack.identity.v3.project.Project` + instance. + :param group: Either the ID of a group or a + :class:`~openstack.identity.v3.group.Group` instance. + :param role: Either the ID of a role or a + :class:`~openstack.identity.v3.role.Role` instance. + :returns: True if group has role in project + """ + project = self._get_resource(_project.Project, project) + group = self._get_resource(_group.Group, group) + role = self._get_resource(_role.Role, role) + return project.validate_group_has_role(self, group, role)