adding Group Management related API methods
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/eaf20ccf Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/eaf20ccf Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/eaf20ccf Branch: refs/heads/develop Commit: eaf20ccf26819132d17aed02aed8601383298d54 Parents: 171ee0c Author: scnakandala <[email protected]> Authored: Tue Jul 12 11:49:42 2016 -0400 Committer: scnakandala <[email protected]> Committed: Tue Jul 12 11:49:42 2016 -0400 ---------------------------------------------------------------------- .../server/handler/AiravataServerHandler.java | 42 ++++++++++++++++++-- .../resources/airavata-default-xacml-policy.xml | 4 ++ .../airavata/grouper/GroupManagerCPI.java | 6 +++ .../airavata/grouper/GroupManagerImpl.java | 19 +++++++++ 4 files changed, 68 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/eaf20ccf/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java index 6441637..6dc976d 100644 --- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java +++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java @@ -4548,7 +4548,7 @@ public class AiravataServerHandler implements Airavata.Iface { public boolean deleteGroup(AuthzToken authzToken, String groupId, String ownerId, String gatewayId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException { try { GroupManagerCPI groupManager = GroupManagerFactory.getGroupManager(); - + groupManager.deleteGroup(groupId, ownerId + "@" + gatewayId); } catch (Exception e) { String msg = "Error Deleting Group. Group ID: " + groupId ; logger.error(msg, e); @@ -4562,13 +4562,49 @@ public class AiravataServerHandler implements Airavata.Iface { @Override @SecurityCheck public GroupModel getGroup(AuthzToken authzToken, String groupId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException { - return null; + try { + GroupManagerCPI groupManager = GroupManagerFactory.getGroupManager(); + Group group = groupManager.getGroup(groupId); + GroupModel groupModel = new GroupModel(); + groupModel.setId(group.getId()); + groupModel.setName(group.getName()); + groupModel.setDescription(group.getDescription()); + groupModel.setMembers(group.getMembers()); + + return groupModel; + } catch (Exception e) { + String msg = "Error Retreiving Group. Group ID: " + groupId ; + logger.error(msg, e); + AiravataSystemException exception = new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR); + exception.setMessage(msg + " More info : " + e.getMessage()); + throw exception; + } } @Override @SecurityCheck public List<GroupModel> getAllGroupsUserBelongs(AuthzToken authzToken, String userName, String gatewayId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException { - return null; + try { + GroupManagerCPI groupManager = GroupManagerFactory.getGroupManager(); + List<Group> userGroups = groupManager.getAllGroupsUserBelongs(userName+"@"+gatewayId); + List<GroupModel> groupModels = new ArrayList<>(); + userGroups.stream().forEach(group->{ + GroupModel groupModel = new GroupModel(); + groupModel.setId(group.getId()); + groupModel.setName(group.getName()); + groupModel.setDescription(group.getDescription()); + groupModel.setMembers(group.getMembers()); + + groupModels.add(groupModel); + }); + return groupModels; + } catch (Exception e) { + String msg = "Error Retreiving All Groups for User. User ID: " + userName ; + logger.error(msg, e); + AiravataSystemException exception = new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR); + exception.setMessage(msg + " More info : " + e.getMessage()); + throw exception; + } } private void initializeResourceWithGrouper(String resourceId, ResourceType resourceType) throws RegistryException, GroupManagerException { http://git-wip-us.apache.org/repos/asf/airavata/blob/eaf20ccf/modules/configuration/server/src/main/resources/airavata-default-xacml-policy.xml ---------------------------------------------------------------------- diff --git a/modules/configuration/server/src/main/resources/airavata-default-xacml-policy.xml b/modules/configuration/server/src/main/resources/airavata-default-xacml-policy.xml index 426f5fe..c5532e2 100644 --- a/modules/configuration/server/src/main/resources/airavata-default-xacml-policy.xml +++ b/modules/configuration/server/src/main/resources/airavata-default-xacml-policy.xml @@ -29,6 +29,8 @@ <AllOf> <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match"> <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">^(?:(?! +/airavata/getAllGateways| +/airavata/getGateway| /airavata/getSSHPubKey| /airavata/getAllGatewaySSHPubKeys| /airavata/getAllGatewayPWDCredentials| @@ -123,6 +125,8 @@ <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match"> <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">^(?:(?! /airavata/getAPIVersion| +/airavata/getAllGateways| +/airavata/getGateway| /airavata/getNotification| /airavata/getAllNotifications| /airavata/createProject| http://git-wip-us.apache.org/repos/asf/airavata/blob/eaf20ccf/modules/group-manager/src/main/java/org/apache/airavata/grouper/GroupManagerCPI.java ---------------------------------------------------------------------- diff --git a/modules/group-manager/src/main/java/org/apache/airavata/grouper/GroupManagerCPI.java b/modules/group-manager/src/main/java/org/apache/airavata/grouper/GroupManagerCPI.java index b5f07b3..fcbbfef 100644 --- a/modules/group-manager/src/main/java/org/apache/airavata/grouper/GroupManagerCPI.java +++ b/modules/group-manager/src/main/java/org/apache/airavata/grouper/GroupManagerCPI.java @@ -26,4 +26,10 @@ public interface GroupManagerCPI { void createGroup(Group group); void updateGroup(Group group); + + void deleteGroup(String groupId, String s); + + Group getGroup(String groupId); + + List<Group> getAllGroupsUserBelongs(String userId); } http://git-wip-us.apache.org/repos/asf/airavata/blob/eaf20ccf/modules/group-manager/src/main/java/org/apache/airavata/grouper/GroupManagerImpl.java ---------------------------------------------------------------------- diff --git a/modules/group-manager/src/main/java/org/apache/airavata/grouper/GroupManagerImpl.java b/modules/group-manager/src/main/java/org/apache/airavata/grouper/GroupManagerImpl.java index b2bf1a7..e90606c 100644 --- a/modules/group-manager/src/main/java/org/apache/airavata/grouper/GroupManagerImpl.java +++ b/modules/group-manager/src/main/java/org/apache/airavata/grouper/GroupManagerImpl.java @@ -21,6 +21,7 @@ package org.apache.airavata.grouper; import org.apache.airavata.grouper.group.Group; +import org.apache.airavata.grouper.group.GroupMembership; import org.apache.airavata.grouper.group.GroupServiceImpl; import org.apache.airavata.grouper.permission.PermissionAction; import org.apache.airavata.grouper.permission.PermissionServiceImpl; @@ -96,4 +97,22 @@ public class GroupManagerImpl implements GroupManagerCPI { public void updateGroup(Group group) { groupService.updateGroup(group); } + + @Override + public void deleteGroup(String groupId, String userId) { + groupService.deleteGroup(groupId, userId); + } + + @Override + public Group getGroup(String groupId) { + return groupService.getGroup(groupId); + } + + @Override + public List<Group> getAllGroupsUserBelongs(String userId) { + List<GroupMembership> groupMemberships = groupService.getAllMembershipsForUser(userId); + List<Group> groupList = new ArrayList<>(); + groupMemberships.stream().forEach(gm->groupList.add(getGroup(gm.getGroupId()))); + return groupList; + } } \ No newline at end of file
