airavata-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (AIRAVATA-2697) Update GroupResourceProfile methods in API server to use sharing API to enforce READ and WRITE rules
Date Wed, 11 Apr 2018 18:21:01 GMT

    [ https://issues.apache.org/jira/browse/AIRAVATA-2697?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16434368#comment-16434368 ] 

ASF GitHub Bot commented on AIRAVATA-2697:
------------------------------------------

machristie closed pull request #181: [AIRAVATA-2697] Update GroupResourceProfile methods in API server to use sharing API to enforce READ and WRITE rules
URL: https://github.com/apache/airavata/pull/181
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

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 99a1cb8ac9..47479dc75d 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
@@ -45,12 +45,7 @@
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule;
 import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription;
-import org.apache.airavata.model.appcatalog.computeresource.CloudJobSubmission;
-import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
-import org.apache.airavata.model.appcatalog.computeresource.LOCALSubmission;
-import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManager;
-import org.apache.airavata.model.appcatalog.computeresource.SSHJobSubmission;
-import org.apache.airavata.model.appcatalog.computeresource.UnicoreJobSubmission;
+import org.apache.airavata.model.appcatalog.computeresource.*;
 import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
 import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
 import org.apache.airavata.model.appcatalog.gatewayprofile.StoragePreference;
@@ -5079,9 +5074,31 @@ else if(userPermission.getValue().equals(ResourcePermissionType.EXEC))
     @SecurityCheck
     public void createGroupResourceProfile(AuthzToken authzToken, GroupResourceProfile groupResourceProfile) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         RegistryService.Client regClient = registryClientPool.getResource();
+        SharingRegistryService.Client sharingClient = sharingClientPool.getResource();
+        String userName = authzToken.getClaimsMap().get(Constants.USER_NAME);
         try {
-            regClient.createGroupResourceProfile(groupResourceProfile);
+            String groupResourceProfileId = regClient.createGroupResourceProfile(groupResourceProfile);
+            if(ServerSettings.isEnableSharing()) {
+                try {
+                    Entity entity = new Entity();
+                    entity.setEntityId(groupResourceProfileId);
+                    entity.setDomainId(groupResourceProfile.getGatewayId());
+                    entity.setEntityTypeId(groupResourceProfile.getGatewayId() + ":" + "GROUP_RESOURCE_PROFILE");
+                    entity.setOwnerId(userName + "@" + groupResourceProfile.getGatewayId());
+                    entity.setName(groupResourceProfile.getGroupResourceProfileName());
+
+                    sharingClient.createEntity(entity);
+                } catch (Exception ex) {
+                    logger.error(ex.getMessage(), ex);
+                    logger.error("Rolling back group resource profile creation Group Resource Profile ID : " + groupResourceProfileId);
+                    regClient.removeGroupResourceProfile(groupResourceProfileId);
+                    AiravataSystemException ase = new AiravataSystemException();
+                    ase.setMessage("Failed to create sharing registry record");
+                    throw ase;
+                }
+            }
             registryClientPool.returnResource(regClient);
+            sharingClientPool.returnResource(sharingClient);
         } catch (Exception e) {
             String msg = "Error creating group resource profile.";
             logger.error(msg, e);
@@ -5096,9 +5113,23 @@ public void createGroupResourceProfile(AuthzToken authzToken, GroupResourceProfi
     @SecurityCheck
     public void updateGroupResourceProfile(AuthzToken authzToken, GroupResourceProfile groupResourceProfile) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         RegistryService.Client regClient = registryClientPool.getResource();
+        SharingRegistryService.Client sharingClient = sharingClientPool.getResource();
         try {
+            if(ServerSettings.isEnableSharing()) {
+                try {
+                    String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
+                    String userId = authzToken.getClaimsMap().get(Constants.USER_NAME);
+                    if (!sharingClient.userHasAccess(gatewayId, userId + "@" + gatewayId,
+                            groupResourceProfile.getGroupResourceProfileId(), gatewayId + ":WRITE")){
+                        throw new AuthorizationException("User does not have permission to update group resource profile");
+                    }
+                } catch (Exception e) {
+                    throw new AuthorizationException("User does not have permission to update group resource profile");
+                }
+            }
             regClient.updateGroupResourceProfile(groupResourceProfile);
             registryClientPool.returnResource(regClient);
+            sharingClientPool.returnResource(sharingClient);
         } catch (Exception e) {
             String msg = "Error updating group resource profile. groupResourceProfileId: "+groupResourceProfile.getGroupResourceProfileId();
             logger.error(msg, e);
@@ -5113,9 +5144,23 @@ public void updateGroupResourceProfile(AuthzToken authzToken, GroupResourceProfi
     @SecurityCheck
     public GroupResourceProfile getGroupResourceProfile(AuthzToken authzToken, String groupResourceProfileId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         RegistryService.Client regClient = registryClientPool.getResource();
+        SharingRegistryService.Client sharingClient = sharingClientPool.getResource();
         try {
-            GroupResourceProfile groupResourceProfile = regClient.getGroupResourceProfile( groupResourceProfileId);
+            if(ServerSettings.isEnableSharing()) {
+                try {
+                    String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
+                    String userId = authzToken.getClaimsMap().get(Constants.USER_NAME);
+                    if (!sharingClient.userHasAccess(gatewayId, userId + "@" + gatewayId,
+                            groupResourceProfileId, gatewayId + ":READ")){
+                        throw new AuthorizationException("User does not have permission to access group resource profile");
+                    }
+                } catch (Exception e) {
+                    throw new AuthorizationException("User does not have permission to access group resource profile");
+                }
+            }
+            GroupResourceProfile groupResourceProfile = regClient.getGroupResourceProfile(groupResourceProfileId);
             registryClientPool.returnResource(regClient);
+            sharingClientPool.returnResource(sharingClient);
             return groupResourceProfile;
         } catch (Exception e) {
             String msg = "Error retrieving group resource profile. groupResourceProfileId: "+ groupResourceProfileId;
@@ -5131,9 +5176,23 @@ public GroupResourceProfile getGroupResourceProfile(AuthzToken authzToken, Strin
     @SecurityCheck
     public boolean removeGroupResourceProfile(AuthzToken authzToken, String groupResourceProfileId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         RegistryService.Client regClient = registryClientPool.getResource();
+        SharingRegistryService.Client sharingClient = sharingClientPool.getResource();
         try {
+            if(ServerSettings.isEnableSharing()) {
+                try {
+                    String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
+                    String userId = authzToken.getClaimsMap().get(Constants.USER_NAME);
+                    if (!sharingClient.userHasAccess(gatewayId, userId + "@" + gatewayId,
+                            groupResourceProfileId, gatewayId + ":WRITE")){
+                        throw new AuthorizationException("User does not have permission to remove group resource profile");
+                    }
+                } catch (Exception e) {
+                    throw new AuthorizationException("User does not have permission to remove group resource profile");
+                }
+            }
             boolean result = regClient.removeGroupResourceProfile(groupResourceProfileId);
             registryClientPool.returnResource(regClient);
+            sharingClientPool.returnResource(sharingClient);
             return result;
         } catch (Exception e) {
             String msg = "Error removing group resource profile. groupResourceProfileId: "+ groupResourceProfileId;
@@ -5152,8 +5211,8 @@ public boolean removeGroupResourceProfile(AuthzToken authzToken, String groupRes
         SharingRegistryService.Client sharingClient = sharingClientPool.getResource();
         String userName = authzToken.getClaimsMap().get(Constants.USER_NAME);
         try {
+            List<String> accessibleGroupResProfileIds = new ArrayList<>();
             if (ServerSettings.isEnableSharing()) {
-                List<String> accessibleGroupResProfileIds = new ArrayList<>();
                 List<SearchCriteria> filters = new ArrayList<>();
                 SearchCriteria searchCriteria = new SearchCriteria();
                 searchCriteria.setSearchField(EntitySearchField.ENTITY_TYPE_ID);
@@ -5163,19 +5222,12 @@ public boolean removeGroupResourceProfile(AuthzToken authzToken, String groupRes
                 sharingClient.searchEntities(authzToken.getClaimsMap().get(Constants.GATEWAY_ID),
                         userName + "@" + gatewayId, filters, 0, -1).stream().forEach(p -> accessibleGroupResProfileIds
                         .add(p.entityId));
-                // TODO: push accessibleGroupResProfileIds filtering down
-                List<GroupResourceProfile> groupResourceProfileList = regClient.getGroupResourceList(gatewayId);
-                registryClientPool.returnResource(regClient);
-                sharingClientPool.returnResource(sharingClient);
-                return groupResourceProfileList.stream()
-                        .filter(grp -> accessibleGroupResProfileIds.contains(grp.getGroupResourceProfileId()))
-                        .collect(Collectors.toList());
-            } else {
-                List<GroupResourceProfile> groupResourceProfileList = regClient.getGroupResourceList(gatewayId);
-                registryClientPool.returnResource(regClient);
-                sharingClientPool.returnResource(sharingClient);
-                return groupResourceProfileList;
+
             }
+            List<GroupResourceProfile> groupResourceProfileList = regClient.getGroupResourceList(gatewayId, accessibleGroupResProfileIds);
+            registryClientPool.returnResource(regClient);
+            sharingClientPool.returnResource(sharingClient);
+            return groupResourceProfileList;
         } catch (Exception e) {
             String msg = "Error retrieving list group resource profile list. GatewayId: "+ gatewayId;
             logger.error(msg, e);
@@ -5191,9 +5243,23 @@ public boolean removeGroupResourceProfile(AuthzToken authzToken, String groupRes
     @SecurityCheck
     public boolean removeGroupComputePrefs(AuthzToken authzToken, String computeResourceId, String groupResourceProfileId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         RegistryService.Client regClient = registryClientPool.getResource();
+        SharingRegistryService.Client sharingClient = sharingClientPool.getResource();
         try {
+            if(ServerSettings.isEnableSharing()) {
+                try {
+                    String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
+                    String userId = authzToken.getClaimsMap().get(Constants.USER_NAME);
+                    if (!sharingClient.userHasAccess(gatewayId, userId + "@" + gatewayId,
+                            groupResourceProfileId, gatewayId + ":WRITE")){
+                        throw new AuthorizationException("User does not have permission to remove group compute preferences");
+                    }
+                } catch (Exception e) {
+                    throw new AuthorizationException("User does not have permission to remove group compute preferences");
+                }
+            }
             boolean result = regClient.removeGroupComputePrefs(computeResourceId, groupResourceProfileId);
             registryClientPool.returnResource(regClient);
+            sharingClientPool.returnResource(sharingClient);
             return result;
         } catch (Exception e) {
             String msg = "Error removing group compute resource preferences. GroupResourceProfileId: "+ groupResourceProfileId;
@@ -5209,9 +5275,24 @@ public boolean removeGroupComputePrefs(AuthzToken authzToken, String computeReso
     @SecurityCheck
     public boolean removeGroupComputeResourcePolicy(AuthzToken authzToken, String resourcePolicyId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         RegistryService.Client regClient = registryClientPool.getResource();
+        SharingRegistryService.Client sharingClient = sharingClientPool.getResource();
         try {
+            if(ServerSettings.isEnableSharing()) {
+                try {
+                    ComputeResourcePolicy computeResourcePolicy = regClient.getGroupComputeResourcePolicy(resourcePolicyId);
+                    String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
+                    String userId = authzToken.getClaimsMap().get(Constants.USER_NAME);
+                    if (!sharingClient.userHasAccess(gatewayId, userId + "@" + gatewayId,
+                            computeResourcePolicy.getGroupResourceProfileId(), gatewayId + ":WRITE")){
+                        throw new AuthorizationException("User does not have permission to remove group compute resource policy");
+                    }
+                } catch (Exception e) {
+                    throw new AuthorizationException("User does not have permission to remove group compute resource policy");
+                }
+            }
             boolean result = regClient.removeGroupComputeResourcePolicy(resourcePolicyId);
             registryClientPool.returnResource(regClient);
+            sharingClientPool.returnResource(sharingClient);
             return result;
         } catch (Exception e) {
             String msg = "Error removing group compute resource policy. ResourcePolicyId: "+ resourcePolicyId;
@@ -5227,9 +5308,24 @@ public boolean removeGroupComputeResourcePolicy(AuthzToken authzToken, String re
     @SecurityCheck
     public boolean removeGroupBatchQueueResourcePolicy(AuthzToken authzToken, String resourcePolicyId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         RegistryService.Client regClient = registryClientPool.getResource();
+        SharingRegistryService.Client sharingClient = sharingClientPool.getResource();
         try {
+            if(ServerSettings.isEnableSharing()) {
+                try {
+                    BatchQueueResourcePolicy batchQueueResourcePolicy = regClient.getBatchQueueResourcePolicy(resourcePolicyId);
+                    String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
+                    String userId = authzToken.getClaimsMap().get(Constants.USER_NAME);
+                    if (!sharingClient.userHasAccess(gatewayId, userId + "@" + gatewayId,
+                            batchQueueResourcePolicy.getGroupResourceProfileId(), gatewayId + ":WRITE")){
+                        throw new AuthorizationException("User does not have permission to remove batch queue resource policy");
+                    }
+                } catch (Exception e) {
+                    throw new AuthorizationException("User does not have permission to remove batch queue resource policy");
+                }
+            }
             boolean result = regClient.removeGroupBatchQueueResourcePolicy(resourcePolicyId);
             registryClientPool.returnResource(regClient);
+            sharingClientPool.returnResource(sharingClient);
             return result;
         } catch (Exception e) {
             String msg = "Error removing batch queue resource policy. ResourcePolicyId: "+ resourcePolicyId;
@@ -5245,9 +5341,23 @@ public boolean removeGroupBatchQueueResourcePolicy(AuthzToken authzToken, String
     @SecurityCheck
     public GroupComputeResourcePreference getGroupComputeResourcePreference(AuthzToken authzToken, String computeResourceId, String groupResourceProfileId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         RegistryService.Client regClient = registryClientPool.getResource();
+        SharingRegistryService.Client sharingClient = sharingClientPool.getResource();
         try {
+            if(ServerSettings.isEnableSharing()) {
+                try {
+                    String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
+                    String userId = authzToken.getClaimsMap().get(Constants.USER_NAME);
+                    if (!sharingClient.userHasAccess(gatewayId, userId + "@" + gatewayId,
+                            groupResourceProfileId, gatewayId + ":READ")){
+                        throw new AuthorizationException("User does not have permission to access group resource profile");
+                    }
+                } catch (Exception e) {
+                    throw new AuthorizationException("User does not have permission to access group resource profile");
+                }
+            }
             GroupComputeResourcePreference groupComputeResourcePreference = regClient.getGroupComputeResourcePreference(computeResourceId, groupResourceProfileId);
             registryClientPool.returnResource(regClient);
+            sharingClientPool.returnResource(sharingClient);
             return groupComputeResourcePreference;
         } catch (Exception e) {
             String msg = "Error retrieving Group compute preference. GroupResourceProfileId: "+ groupResourceProfileId;
@@ -5263,9 +5373,25 @@ public GroupComputeResourcePreference getGroupComputeResourcePreference(AuthzTok
     @SecurityCheck
     public ComputeResourcePolicy getGroupComputeResourcePolicy(AuthzToken authzToken, String resourcePolicyId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         RegistryService.Client regClient = registryClientPool.getResource();
+        SharingRegistryService.Client sharingClient = sharingClientPool.getResource();
         try {
+            if(ServerSettings.isEnableSharing()) {
+                try {
+                    ComputeResourcePolicy computeResourcePolicy = regClient.getGroupComputeResourcePolicy(resourcePolicyId);
+                    String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
+                    String userId = authzToken.getClaimsMap().get(Constants.USER_NAME);
+                    if (!sharingClient.userHasAccess(gatewayId, userId + "@" + gatewayId,
+                            computeResourcePolicy.getGroupResourceProfileId(), gatewayId + ":READ")){
+                        throw new AuthorizationException("User does not have permission to access group resource profile");
+                    }
+                } catch (Exception e) {
+                    throw new AuthorizationException("User does not have permission to access group resource profile");
+                }
+            }
+
             ComputeResourcePolicy computeResourcePolicy = regClient.getGroupComputeResourcePolicy(resourcePolicyId);
             registryClientPool.returnResource(regClient);
+            sharingClientPool.returnResource(sharingClient);
             return computeResourcePolicy;
         } catch (Exception e) {
             String msg = "Error retrieving Group compute resource policy. ResourcePolicyId: "+ resourcePolicyId;
@@ -5281,9 +5407,24 @@ public ComputeResourcePolicy getGroupComputeResourcePolicy(AuthzToken authzToken
     @SecurityCheck
     public BatchQueueResourcePolicy getBatchQueueResourcePolicy(AuthzToken authzToken, String resourcePolicyId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         RegistryService.Client regClient = registryClientPool.getResource();
+        SharingRegistryService.Client sharingClient = sharingClientPool.getResource();
         try {
+            if(ServerSettings.isEnableSharing()) {
+                try {
+                    BatchQueueResourcePolicy batchQueueResourcePolicy = regClient.getBatchQueueResourcePolicy(resourcePolicyId);
+                    String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
+                    String userId = authzToken.getClaimsMap().get(Constants.USER_NAME);
+                    if (!sharingClient.userHasAccess(gatewayId, userId + "@" + gatewayId,
+                            batchQueueResourcePolicy.getGroupResourceProfileId(), gatewayId + ":READ")){
+                        throw new AuthorizationException("User does not have permission to access group resource profile");
+                    }
+                } catch (Exception e) {
+                    throw new AuthorizationException("User does not have permission to access group resource profile");
+                }
+            }
             BatchQueueResourcePolicy batchQueueResourcePolicy = regClient.getBatchQueueResourcePolicy(resourcePolicyId);
             registryClientPool.returnResource(regClient);
+            sharingClientPool.returnResource(sharingClient);
             return batchQueueResourcePolicy;
         } catch (Exception e) {
             String msg = "Error retrieving Group batch queue resource policy. ResourcePolicyId: "+ resourcePolicyId;
@@ -5299,9 +5440,23 @@ public BatchQueueResourcePolicy getBatchQueueResourcePolicy(AuthzToken authzToke
     @SecurityCheck
     public List<GroupComputeResourcePreference> getGroupComputeResourcePrefList(AuthzToken authzToken, String groupResourceProfileId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         RegistryService.Client regClient = registryClientPool.getResource();
+        SharingRegistryService.Client sharingClient = sharingClientPool.getResource();
         try {
+            if(ServerSettings.isEnableSharing()) {
+                try {
+                    String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
+                    String userId = authzToken.getClaimsMap().get(Constants.USER_NAME);
+                    if (!sharingClient.userHasAccess(gatewayId, userId + "@" + gatewayId,
+                            groupResourceProfileId, gatewayId + ":READ")){
+                        throw new AuthorizationException("User does not have permission to access group resource profile");
+                    }
+                } catch (Exception e) {
+                    throw new AuthorizationException("User does not have permission to access group resource profile");
+                }
+            }
             List<GroupComputeResourcePreference> groupComputeResourcePreferenceList = regClient.getGroupComputeResourcePrefList(groupResourceProfileId);
             registryClientPool.returnResource(regClient);
+            sharingClientPool.returnResource(sharingClient);
             return groupComputeResourcePreferenceList;
         } catch (Exception e) {
             String msg = "Error retrieving Group compute resource preference. GroupResourceProfileId: "+ groupResourceProfileId;
@@ -5317,9 +5472,23 @@ public BatchQueueResourcePolicy getBatchQueueResourcePolicy(AuthzToken authzToke
     @SecurityCheck
     public List<BatchQueueResourcePolicy> getGroupBatchQueueResourcePolicyList(AuthzToken authzToken, String groupResourceProfileId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         RegistryService.Client regClient = registryClientPool.getResource();
+        SharingRegistryService.Client sharingClient = sharingClientPool.getResource();
         try {
+            if(ServerSettings.isEnableSharing()) {
+                try {
+                    String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
+                    String userId = authzToken.getClaimsMap().get(Constants.USER_NAME);
+                    if (!sharingClient.userHasAccess(gatewayId, userId + "@" + gatewayId,
+                            groupResourceProfileId, gatewayId + ":READ")){
+                        throw new AuthorizationException("User does not have permission to access group resource profile");
+                    }
+                } catch (Exception e) {
+                    throw new AuthorizationException("User does not have permission to access group resource profile");
+                }
+            }
             List<BatchQueueResourcePolicy> batchQueueResourcePolicyList = regClient.getGroupBatchQueueResourcePolicyList(groupResourceProfileId);
             registryClientPool.returnResource(regClient);
+            sharingClientPool.returnResource(sharingClient);
             return batchQueueResourcePolicyList;
         } catch (Exception e) {
             String msg = "Error retrieving Group batch queue resource policy list. GroupResourceProfileId: "+ groupResourceProfileId;
@@ -5335,9 +5504,23 @@ public BatchQueueResourcePolicy getBatchQueueResourcePolicy(AuthzToken authzToke
     @SecurityCheck
     public List<ComputeResourcePolicy> getGroupComputeResourcePolicyList(AuthzToken authzToken, String groupResourceProfileId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         RegistryService.Client regClient = registryClientPool.getResource();
+        SharingRegistryService.Client sharingClient = sharingClientPool.getResource();
         try {
+            if(ServerSettings.isEnableSharing()) {
+                try {
+                    String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
+                    String userId = authzToken.getClaimsMap().get(Constants.USER_NAME);
+                    if (!sharingClient.userHasAccess(gatewayId, userId + "@" + gatewayId,
+                            groupResourceProfileId, gatewayId + ":READ")){
+                        throw new AuthorizationException("User does not have permission to access group resource profile");
+                    }
+                } catch (Exception e) {
+                    throw new AuthorizationException("User does not have permission to access group resource profile");
+                }
+            }
             List<ComputeResourcePolicy> computeResourcePolicyList = regClient.getGroupComputeResourcePolicyList(groupResourceProfileId);
             registryClientPool.returnResource(regClient);
+            sharingClientPool.returnResource(sharingClient);
             return computeResourcePolicyList;
         } catch (Exception e) {
             String msg = "Error retrieving Group compute resource policy list. GroupResourceProfileId: "+ groupResourceProfileId;
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/appcatalog/GroupResourceProfileRepository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/appcatalog/GroupResourceProfileRepository.java
index 520c5e1248..51aad42bb4 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/appcatalog/GroupResourceProfileRepository.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/appcatalog/GroupResourceProfileRepository.java
@@ -27,9 +27,7 @@
 import org.apache.airavata.registry.core.utils.DBConstants;
 import org.apache.airavata.registry.core.utils.QueryConstants;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * Created by skariyat on 2/8/18.
@@ -40,10 +38,26 @@ public GroupResourceProfileRepository() {
         super(GroupResourceProfile.class, GroupResourceProfileEntity.class);
     }
 
-    public void addGroupResourceProfile(GroupResourceProfile groupResourceProfile) {
+    public String addGroupResourceProfile(GroupResourceProfile groupResourceProfile) {
 
+        final String groupResourceProfileId = UUID.randomUUID().toString();
+        groupResourceProfile.setGroupResourceProfileId(groupResourceProfileId);
         groupResourceProfile.setCreationTime(System.currentTimeMillis());
-        updateGroupResourceProfile(groupResourceProfile);
+        if (groupResourceProfile.getComputePreferences() != null) {
+            for (GroupComputeResourcePreference groupComputeResourcePreference: groupResourceProfile.getComputePreferences()) {
+                groupComputeResourcePreference.setGroupResourceProfileId(groupResourceProfileId);
+                if (groupComputeResourcePreference.getGroupSSHAccountProvisionerConfigs() != null) {
+                    groupComputeResourcePreference.getGroupSSHAccountProvisionerConfigs().forEach(gssh -> gssh.setGroupResourceProfileId(groupResourceProfileId));
+                }
+            }
+        }
+        if (groupResourceProfile.getBatchQueueResourcePolicies() != null) {
+            groupResourceProfile.getBatchQueueResourcePolicies().forEach(bq -> bq.setGroupResourceProfileId(groupResourceProfileId));
+        }
+        if (groupResourceProfile.getComputeResourcePolicies() != null) {
+            groupResourceProfile.getComputeResourcePolicies().forEach(cr -> cr.setGroupResourceProfileId(groupResourceProfileId));
+        }
+        return updateGroupResourceProfile(groupResourceProfile);
     }
 
     public String updateGroupResourceProfile(GroupResourceProfile updatedGroupResourceProfile) {
@@ -72,9 +86,14 @@ public boolean isGroupResourceProfileExists(String groupResourceProfileId) {
         return isExists(groupResourceProfilePK);
     }
 
-    public List<GroupResourceProfile> getAllGroupResourceProfiles(String gatewayId) {
+    public List<GroupResourceProfile> getAllGroupResourceProfiles(String gatewayId, List<String> accessibleGroupResProfileIds) {
         Map<String,Object> queryParameters = new HashMap<>();
         queryParameters.put(DBConstants.GroupResourceProfile.GATEWAY_ID, gatewayId);
+
+        if (accessibleGroupResProfileIds != null && !accessibleGroupResProfileIds.isEmpty()) {
+            queryParameters.put(DBConstants.GroupResourceProfile.ACCESSIBLE_GROUP_RESOURCE_IDS, accessibleGroupResProfileIds);
+            return select(QueryConstants.FIND_ACCESSIBLE_GROUP_RESOURCE_PROFILES, -1, 0, queryParameters);
+        }
         List<GroupResourceProfile> groupResourceProfileList = select(QueryConstants.FIND_ALL_GROUP_RESOURCE_PROFILES, -1, 0, queryParameters);
         return groupResourceProfileList;
     }
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/DBConstants.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/DBConstants.java
index 15ca0bf9e4..3d5e51ec0e 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/DBConstants.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/DBConstants.java
@@ -71,6 +71,7 @@
     public static class GroupResourceProfile {
         public static final String GATEWAY_ID = "gatewayId";
         public static final String GROUP_RESOURCE_PROFILE_ID = "groupResourceProfileId";
+        public static final String ACCESSIBLE_GROUP_RESOURCE_IDS = "accessibleGroupResProfileIds";
     }
 
     public static class UserResourceProfile {
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/QueryConstants.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/QueryConstants.java
index da2869fe6c..6ba4835e14 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/QueryConstants.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/QueryConstants.java
@@ -87,6 +87,9 @@
     String GET_PARALLELISM_PREFIX = "SELECT DISTINCT PF FROM " + ParallelismCommandEntity.class.getSimpleName() + " PF " +
             "WHERE PF.resourceJobManagerId LIKE :" + DBConstants.ResourceJobManager.RESOURCE_JOB_MANAGER_ID;
 
+    String FIND_ACCESSIBLE_GROUP_RESOURCE_PROFILES = "SELECT G FROM " + GroupResourceProfileEntity.class.getSimpleName() + " G " +
+            "WHERE G.gatewayId LIKE :" + DBConstants.GroupResourceProfile.GATEWAY_ID + " AND G.groupResourceProfileId IN :"
+            + DBConstants.GroupResourceProfile.ACCESSIBLE_GROUP_RESOURCE_IDS;
     String FIND_ALL_GROUP_RESOURCE_PROFILES = "SELECT G FROM " + GroupResourceProfileEntity.class.getSimpleName() + " G " +
             "WHERE G.gatewayId LIKE :" + DBConstants.GroupResourceProfile.GATEWAY_ID;
     String FIND_ALL_GROUP_COMPUTE_PREFERENCES = "SELECT GC FROM "+ GroupComputeResourcePrefEntity.class.getSimpleName() + " GC " +
diff --git a/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/appcatalog/GroupResourceProfileRepositoryTest.java b/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/appcatalog/GroupResourceProfileRepositoryTest.java
index 6b15432cac..b798b03fc1 100644
--- a/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/appcatalog/GroupResourceProfileRepositoryTest.java
+++ b/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/appcatalog/GroupResourceProfileRepositoryTest.java
@@ -41,8 +41,8 @@
     private ComputeResourceRepository computeResourceRepository;
     private GroupResourceProfileRepository groupResourceProfileRepository;
     private String gatewayId = "TEST_GATEWAY";
-    private String groupResourceProfileId = "TEST_GROUP_PROFILE_ID";
-    private static final Logger logger = LoggerFactory.getLogger(GroupResourceProfileRepositoryTest.class);
+    private String groupResourceProfileId = "";
+    private static final Logger logger = LoggerFactory.getLogger(ComputeResourceRepository.class);
 
     @Before
     public void setUp() {
@@ -128,19 +128,16 @@ public void GroupResourceProfileRepositoryTest() throws AppCatalogException {
         groupResourceProfile.setGroupResourceProfileName("TEST_GROUP_PROFILE_NAME");
 
         GroupAccountSSHProvisionerConfig groupAccountSSHProvisionerConfig = new GroupAccountSSHProvisionerConfig();
-        groupAccountSSHProvisionerConfig.setGroupResourceProfileId(groupResourceProfileId);
         groupAccountSSHProvisionerConfig.setResourceId(resourceId1);
         groupAccountSSHProvisionerConfig.setConfigName("configName");
         groupAccountSSHProvisionerConfig.setConfigValue("configvalue");
 
         GroupComputeResourcePreference groupComputeResourcePreference1 = new GroupComputeResourcePreference();
         groupComputeResourcePreference1.setComputeResourceId(resourceId1);
-        groupComputeResourcePreference1.setGroupResourceProfileId(groupResourceProfileId);
         groupComputeResourcePreference1.addToGroupSSHAccountProvisionerConfigs(groupAccountSSHProvisionerConfig);
 
         GroupComputeResourcePreference groupComputeResourcePreference2 = new GroupComputeResourcePreference();
         groupComputeResourcePreference2.setComputeResourceId(resourceId2);
-        groupComputeResourcePreference2.setGroupResourceProfileId(groupResourceProfileId);
 
         List<GroupComputeResourcePreference> groupComputeResourcePreferenceList = new ArrayList<>();
         groupComputeResourcePreferenceList.add(groupComputeResourcePreference1);
@@ -151,13 +148,11 @@ public void GroupResourceProfileRepositoryTest() throws AppCatalogException {
         ComputeResourcePolicy computeResourcePolicy = new ComputeResourcePolicy();
         computeResourcePolicy.setComputeResourceId(resourceId1);
         computeResourcePolicy.setResourcePolicyId("TEST_COM_RESOURCE_POLICY_ID1");
-        computeResourcePolicy.setGroupResourceProfileId(groupResourceProfileId);
         computeResourcePolicy.addToAllowedBatchQueues("queue1");
 
         ComputeResourcePolicy computeResourcePolicy2 = new ComputeResourcePolicy();
         computeResourcePolicy2.setComputeResourceId(resourceId2);
         computeResourcePolicy2.setResourcePolicyId("TEST_COM_RESOURCE_POLICY_ID2");
-        computeResourcePolicy2.setGroupResourceProfileId(groupResourceProfileId);
         computeResourcePolicy2.addToAllowedBatchQueues("cmqueue1");
 
         List<ComputeResourcePolicy> computeResourcePolicyList =  new ArrayList<>();
@@ -168,7 +163,6 @@ public void GroupResourceProfileRepositoryTest() throws AppCatalogException {
 
         BatchQueueResourcePolicy batchQueueResourcePolicy = new BatchQueueResourcePolicy();
         batchQueueResourcePolicy.setComputeResourceId(resourceId1);
-        batchQueueResourcePolicy.setGroupResourceProfileId(groupResourceProfileId);
         batchQueueResourcePolicy.setResourcePolicyId("TEST_BQ_RESOURCE_POLICY_ID1");
         batchQueueResourcePolicy.setQueuename("queue1");
         batchQueueResourcePolicy.setMaxAllowedCores(2);
@@ -176,7 +170,6 @@ public void GroupResourceProfileRepositoryTest() throws AppCatalogException {
 
         BatchQueueResourcePolicy batchQueueResourcePolicy2 = new BatchQueueResourcePolicy();
         batchQueueResourcePolicy2.setComputeResourceId(resourceId2);
-        batchQueueResourcePolicy2.setGroupResourceProfileId(groupResourceProfileId);
         batchQueueResourcePolicy2.setResourcePolicyId("TEST_BQ_RESOURCE_POLICY_ID2");
         batchQueueResourcePolicy2.setQueuename("cmqueue1");
         batchQueueResourcePolicy2.setMaxAllowedCores(3);
@@ -188,7 +181,7 @@ public void GroupResourceProfileRepositoryTest() throws AppCatalogException {
 
         groupResourceProfile.setBatchQueueResourcePolicies(batchQueueResourcePolicyList);
 
-        groupResourceProfileRepository.addGroupResourceProfile(groupResourceProfile);
+        groupResourceProfileId = groupResourceProfileRepository.addGroupResourceProfile(groupResourceProfile);
 
         if (groupResourceProfileRepository.isGroupResourceProfileExists(groupResourceProfileId)) {
             GroupResourceProfile getGroupResourceProfile = groupResourceProfileRepository.getGroupResourceProfile(groupResourceProfileId);
@@ -212,7 +205,7 @@ public void GroupResourceProfileRepositoryTest() throws AppCatalogException {
         assertTrue(getBatchQueuePolicy.getMaxAllowedCores() == 3);
         assertTrue(getBatchQueuePolicy.getMaxAllowedWalltime() == 12);
 
-        assertTrue(groupResourceProfileRepository.getAllGroupResourceProfiles(gatewayId).size() == 1);
+        assertTrue(groupResourceProfileRepository.getAllGroupResourceProfiles(gatewayId, null).size() == 1);
         assertTrue(groupResourceProfileRepository.getAllGroupComputeResourcePreferences(groupResourceProfileId).size() == 2);
         assertTrue(groupResourceProfileRepository.getAllGroupComputeResourcePolicies(groupResourceProfileId).size() == 2);
         assertTrue(groupResourceProfileRepository.getAllGroupBatchQueueResourcePolicies(groupResourceProfileId).size() == 2);
diff --git a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
index e9164ed580..c22436f330 100644
--- a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
+++ b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
@@ -2400,22 +2400,16 @@ public DataProductModel getParentDataProduct(String productUri) throws RegistryS
     }
 
     @Override
-    public void createGroupResourceProfile(GroupResourceProfile groupResourceProfile) throws RegistryServiceException, TException {
+    public String createGroupResourceProfile(GroupResourceProfile groupResourceProfile) throws RegistryServiceException, TException {
         try {
-            if (!validateString(groupResourceProfile.getGroupResourceProfileId())){
-                logger.error("Cannot create group resource profile with empty group resource profile id");
-                RegistryServiceException exception =  new RegistryServiceException();
-                exception.setMessage("Cannot create group resource profile with empty gateway id");
-                throw exception;
-            }
             if (!isGatewayExistInternal(groupResourceProfile.getGatewayId())){
                 logger.error("Gateway does not exist.Please provide a valid gateway id...");
                 throw new RegistryServiceException("Gateway does not exist.Please provide a valid gateway id...");
             }
-
             GroupResourceProfileRepository groupResourceProfileRepository = new GroupResourceProfileRepository();
-            groupResourceProfileRepository.addGroupResourceProfile(groupResourceProfile);
-            logger.debug("New Group Resource Profile Created: " + groupResourceProfile.getGroupResourceProfileId());
+            String groupResourceProfileId = groupResourceProfileRepository.addGroupResourceProfile(groupResourceProfile);
+            logger.debug("New Group Resource Profile Created: " + groupResourceProfileId);
+            return groupResourceProfileId;
         } catch (Exception e) {
             logger.error("Error while creating group resource profile...", e);
             RegistryServiceException exception = new RegistryServiceException();
@@ -2484,10 +2478,10 @@ public boolean removeGroupResourceProfile(String groupResourceProfileId) throws
     }
 
     @Override
-    public List<GroupResourceProfile> getGroupResourceList(String gatewayId) throws RegistryServiceException, TException {
+    public List<GroupResourceProfile> getGroupResourceList(String gatewayId, List<String> accessibleGroupResProfileIds) throws RegistryServiceException, TException {
         try {
             GroupResourceProfileRepository groupResourceProfileRepository = new GroupResourceProfileRepository();
-            return groupResourceProfileRepository.getAllGroupResourceProfiles(gatewayId);
+            return groupResourceProfileRepository.getAllGroupResourceProfiles(gatewayId, accessibleGroupResProfileIds);
         } catch (Exception e) {
             logger.error("Error while retrieving group resource list ", e);
             RegistryServiceException exception = new RegistryServiceException();
diff --git a/modules/registry/registry-server/registry-api-stubs/src/main/java/org/apache/airavata/registry/api/RegistryService.java b/modules/registry/registry-server/registry-api-stubs/src/main/java/org/apache/airavata/registry/api/RegistryService.java
index cc4defa667..af5c766554 100644
--- a/modules/registry/registry-server/registry-api-stubs/src/main/java/org/apache/airavata/registry/api/RegistryService.java
+++ b/modules/registry/registry-server/registry-api-stubs/src/main/java/org/apache/airavata/registry/api/RegistryService.java
@@ -2524,7 +2524,7 @@
 
     public java.util.List<org.apache.airavata.model.data.replica.DataProductModel> searchDataProductsByName(java.lang.String gatewayId, java.lang.String userId, java.lang.String productName, int limit, int offset) throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException;
 
-    public void createGroupResourceProfile(org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile groupResourceProfile) throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException;
+    public java.lang.String createGroupResourceProfile(org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile groupResourceProfile) throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException;
 
     public void updateGroupResourceProfile(org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile groupResourceProfile) throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException;
 
@@ -2532,7 +2532,7 @@
 
     public boolean removeGroupResourceProfile(java.lang.String groupResourceProfileId) throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException;
 
-    public java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile> getGroupResourceList(java.lang.String gatewayId) throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException;
+    public java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile> getGroupResourceList(java.lang.String gatewayId, java.util.List<java.lang.String> accessibleGroupResProfileIds) throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException;
 
     public boolean removeGroupComputePrefs(java.lang.String computeResourceId, java.lang.String groupResourceProfileId) throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException;
 
@@ -2896,7 +2896,7 @@
 
     public void searchDataProductsByName(java.lang.String gatewayId, java.lang.String userId, java.lang.String productName, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.data.replica.DataProductModel>> resultHandler) throws org.apache.thrift.TException;
 
-    public void createGroupResourceProfile(org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile groupResourceProfile, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException;
+    public void createGroupResourceProfile(org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile groupResourceProfile, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler) throws org.apache.thrift.TException;
 
     public void updateGroupResourceProfile(org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile groupResourceProfile, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException;
 
@@ -2904,7 +2904,7 @@
 
     public void removeGroupResourceProfile(java.lang.String groupResourceProfileId, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException;
 
-    public void getGroupResourceList(java.lang.String gatewayId, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile>> resultHandler) throws org.apache.thrift.TException;
+    public void getGroupResourceList(java.lang.String gatewayId, java.util.List<java.lang.String> accessibleGroupResProfileIds, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile>> resultHandler) throws org.apache.thrift.TException;
 
     public void removeGroupComputePrefs(java.lang.String computeResourceId, java.lang.String groupResourceProfileId, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException;
 
@@ -7496,10 +7496,10 @@ public void send_searchDataProductsByName(java.lang.String gatewayId, java.lang.
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "searchDataProductsByName failed: unknown result");
     }
 
-    public void createGroupResourceProfile(org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile groupResourceProfile) throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException
+    public java.lang.String createGroupResourceProfile(org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile groupResourceProfile) throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException
     {
       send_createGroupResourceProfile(groupResourceProfile);
-      recv_createGroupResourceProfile();
+      return recv_createGroupResourceProfile();
     }
 
     public void send_createGroupResourceProfile(org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile groupResourceProfile) throws org.apache.thrift.TException
@@ -7509,14 +7509,17 @@ public void send_createGroupResourceProfile(org.apache.airavata.model.appcatalog
       sendBase("createGroupResourceProfile", args);
     }
 
-    public void recv_createGroupResourceProfile() throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException
+    public java.lang.String recv_createGroupResourceProfile() throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException
     {
       createGroupResourceProfile_result result = new createGroupResourceProfile_result();
       receiveBase(result, "createGroupResourceProfile");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
       if (result.rse != null) {
         throw result.rse;
       }
-      return;
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "createGroupResourceProfile failed: unknown result");
     }
 
     public void updateGroupResourceProfile(org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile groupResourceProfile) throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException
@@ -7594,16 +7597,17 @@ public boolean recv_removeGroupResourceProfile() throws org.apache.airavata.regi
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "removeGroupResourceProfile failed: unknown result");
     }
 
-    public java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile> getGroupResourceList(java.lang.String gatewayId) throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException
+    public java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile> getGroupResourceList(java.lang.String gatewayId, java.util.List<java.lang.String> accessibleGroupResProfileIds) throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException
     {
-      send_getGroupResourceList(gatewayId);
+      send_getGroupResourceList(gatewayId, accessibleGroupResProfileIds);
       return recv_getGroupResourceList();
     }
 
-    public void send_getGroupResourceList(java.lang.String gatewayId) throws org.apache.thrift.TException
+    public void send_getGroupResourceList(java.lang.String gatewayId, java.util.List<java.lang.String> accessibleGroupResProfileIds) throws org.apache.thrift.TException
     {
       getGroupResourceList_args args = new getGroupResourceList_args();
       args.setGatewayId(gatewayId);
+      args.setAccessibleGroupResProfileIds(accessibleGroupResProfileIds);
       sendBase("getGroupResourceList", args);
     }
 
@@ -13722,16 +13726,16 @@ public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apa
       }
     }
 
-    public void createGroupResourceProfile(org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile groupResourceProfile, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
+    public void createGroupResourceProfile(org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile groupResourceProfile, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler) throws org.apache.thrift.TException {
       checkReady();
       createGroupResourceProfile_call method_call = new createGroupResourceProfile_call(groupResourceProfile, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
-    public static class createGroupResourceProfile_call extends org.apache.thrift.async.TAsyncMethodCall<Void> {
+    public static class createGroupResourceProfile_call extends org.apache.thrift.async.TAsyncMethodCall<java.lang.String> {
       private org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile groupResourceProfile;
-      public createGroupResourceProfile_call(org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile groupResourceProfile, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      public createGroupResourceProfile_call(org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile groupResourceProfile, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.groupResourceProfile = groupResourceProfile;
       }
@@ -13744,13 +13748,13 @@ public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apa
         prot.writeMessageEnd();
       }
 
-      public Void getResult() throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException {
+      public java.lang.String getResult() throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new java.lang.IllegalStateException("Method call not finished!");
         }
         org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
         org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
-        return null;
+        return (new Client(prot)).recv_createGroupResourceProfile();
       }
     }
 
@@ -13850,24 +13854,27 @@ public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apa
       }
     }
 
-    public void getGroupResourceList(java.lang.String gatewayId, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile>> resultHandler) throws org.apache.thrift.TException {
+    public void getGroupResourceList(java.lang.String gatewayId, java.util.List<java.lang.String> accessibleGroupResProfileIds, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile>> resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      getGroupResourceList_call method_call = new getGroupResourceList_call(gatewayId, resultHandler, this, ___protocolFactory, ___transport);
+      getGroupResourceList_call method_call = new getGroupResourceList_call(gatewayId, accessibleGroupResProfileIds, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
     public static class getGroupResourceList_call extends org.apache.thrift.async.TAsyncMethodCall<java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile>> {
       private java.lang.String gatewayId;
-      public getGroupResourceList_call(java.lang.String gatewayId, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile>> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      private java.util.List<java.lang.String> accessibleGroupResProfileIds;
+      public getGroupResourceList_call(java.lang.String gatewayId, java.util.List<java.lang.String> accessibleGroupResProfileIds, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile>> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.gatewayId = gatewayId;
+        this.accessibleGroupResProfileIds = accessibleGroupResProfileIds;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
         prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getGroupResourceList", org.apache.thrift.protocol.TMessageType.CALL, 0));
         getGroupResourceList_args args = new getGroupResourceList_args();
         args.setGatewayId(gatewayId);
+        args.setAccessibleGroupResProfileIds(accessibleGroupResProfileIds);
         args.write(prot);
         prot.writeMessageEnd();
       }
@@ -18553,7 +18560,7 @@ protected boolean isOneway() {
       public createGroupResourceProfile_result getResult(I iface, createGroupResourceProfile_args args) throws org.apache.thrift.TException {
         createGroupResourceProfile_result result = new createGroupResourceProfile_result();
         try {
-          iface.createGroupResourceProfile(args.groupResourceProfile);
+          result.success = iface.createGroupResourceProfile(args.groupResourceProfile);
         } catch (org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
           result.rse = rse;
         }
@@ -18650,7 +18657,7 @@ protected boolean isOneway() {
       public getGroupResourceList_result getResult(I iface, getGroupResourceList_args args) throws org.apache.thrift.TException {
         getGroupResourceList_result result = new getGroupResourceList_result();
         try {
-          result.success = iface.getGroupResourceList(args.gatewayId);
+          result.success = iface.getGroupResourceList(args.gatewayId, args.accessibleGroupResProfileIds);
         } catch (org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
           result.rse = rse;
         }
@@ -30220,7 +30227,7 @@ public void start(I iface, searchDataProductsByName_args args, org.apache.thrift
       }
     }
 
-    public static class createGroupResourceProfile<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, createGroupResourceProfile_args, Void> {
+    public static class createGroupResourceProfile<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, createGroupResourceProfile_args, java.lang.String> {
       public createGroupResourceProfile() {
         super("createGroupResourceProfile");
       }
@@ -30229,11 +30236,12 @@ public createGroupResourceProfile_args getEmptyArgsInstance() {
         return new createGroupResourceProfile_args();
       }
 
-      public org.apache.thrift.async.AsyncMethodCallback<Void> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
+      public org.apache.thrift.async.AsyncMethodCallback<java.lang.String> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
         final org.apache.thrift.AsyncProcessFunction fcall = this;
-        return new org.apache.thrift.async.AsyncMethodCallback<Void>() { 
-          public void onComplete(Void o) {
+        return new org.apache.thrift.async.AsyncMethodCallback<java.lang.String>() { 
+          public void onComplete(java.lang.String o) {
             createGroupResourceProfile_result result = new createGroupResourceProfile_result();
+            result.success = o;
             try {
               fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
             } catch (org.apache.thrift.transport.TTransportException e) {
@@ -30279,7 +30287,7 @@ protected boolean isOneway() {
         return false;
       }
 
-      public void start(I iface, createGroupResourceProfile_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
+      public void start(I iface, createGroupResourceProfile_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler) throws org.apache.thrift.TException {
         iface.createGroupResourceProfile(args.groupResourceProfile,resultHandler);
       }
     }
@@ -30540,7 +30548,7 @@ protected boolean isOneway() {
       }
 
       public void start(I iface, getGroupResourceList_args args, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile>> resultHandler) throws org.apache.thrift.TException {
-        iface.getGroupResourceList(args.gatewayId,resultHandler);
+        iface.getGroupResourceList(args.gatewayId, args.accessibleGroupResProfileIds,resultHandler);
       }
     }
 
@@ -187866,15 +187874,18 @@ public void read(org.apache.thrift.protocol.TProtocol prot, createGroupResourceP
   public static class createGroupResourceProfile_result implements org.apache.thrift.TBase<createGroupResourceProfile_result, createGroupResourceProfile_result._Fields>, java.io.Serializable, Cloneable, Comparable<createGroupResourceProfile_result>   {
     private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("createGroupResourceProfile_result");
 
+    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRING, (short)0);
     private static final org.apache.thrift.protocol.TField RSE_FIELD_DESC = new org.apache.thrift.protocol.TField("rse", org.apache.thrift.protocol.TType.STRUCT, (short)1);
 
     private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new createGroupResourceProfile_resultStandardSchemeFactory();
     private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new createGroupResourceProfile_resultTupleSchemeFactory();
 
+    public java.lang.String success; // required
     public org.apache.airavata.registry.api.exception.RegistryServiceException rse; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      SUCCESS((short)0, "success"),
       RSE((short)1, "rse");
 
       private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
@@ -187890,6 +187901,8 @@ public void read(org.apache.thrift.protocol.TProtocol prot, createGroupResourceP
        */
       public static _Fields findByThriftId(int fieldId) {
         switch(fieldId) {
+          case 0: // SUCCESS
+            return SUCCESS;
           case 1: // RSE
             return RSE;
           default:
@@ -187935,6 +187948,8 @@ public short getThriftFieldId() {
     public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
     static {
       java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
       tmpMap.put(_Fields.RSE, new org.apache.thrift.meta_data.FieldMetaData("rse", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.registry.api.exception.RegistryServiceException.class)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
@@ -187945,9 +187960,11 @@ public createGroupResourceProfile_result() {
     }
 
     public createGroupResourceProfile_result(
+      java.lang.String success,
       org.apache.airavata.registry.api.exception.RegistryServiceException rse)
     {
       this();
+      this.success = success;
       this.rse = rse;
     }
 
@@ -187955,6 +187972,9 @@ public createGroupResourceProfile_result(
      * Performs a deep copy on <i>other</i>.
      */
     public createGroupResourceProfile_result(createGroupResourceProfile_result other) {
+      if (other.isSetSuccess()) {
+        this.success = other.success;
+      }
       if (other.isSetRse()) {
         this.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException(other.rse);
       }
@@ -187966,9 +187986,34 @@ public createGroupResourceProfile_result deepCopy() {
 
     @Override
     public void clear() {
+      this.success = null;
       this.rse = null;
     }
 
+    public java.lang.String getSuccess() {
+      return this.success;
+    }
+
+    public createGroupResourceProfile_result setSuccess(java.lang.String success) {
+      this.success = success;
+      return this;
+    }
+
+    public void unsetSuccess() {
+      this.success = null;
+    }
+
+    /** Returns true if field success is set (has been assigned a value) and false otherwise */
+    public boolean isSetSuccess() {
+      return this.success != null;
+    }
+
+    public void setSuccessIsSet(boolean value) {
+      if (!value) {
+        this.success = null;
+      }
+    }
+
     public org.apache.airavata.registry.api.exception.RegistryServiceException getRse() {
       return this.rse;
     }
@@ -187995,6 +188040,14 @@ public void setRseIsSet(boolean value) {
 
     public void setFieldValue(_Fields field, java.lang.Object value) {
       switch (field) {
+      case SUCCESS:
+        if (value == null) {
+          unsetSuccess();
+        } else {
+          setSuccess((java.lang.String)value);
+        }
+        break;
+
       case RSE:
         if (value == null) {
           unsetRse();
@@ -188008,6 +188061,9 @@ public void setFieldValue(_Fields field, java.lang.Object value) {
 
     public java.lang.Object getFieldValue(_Fields field) {
       switch (field) {
+      case SUCCESS:
+        return getSuccess();
+
       case RSE:
         return getRse();
 
@@ -188022,6 +188078,8 @@ public boolean isSet(_Fields field) {
       }
 
       switch (field) {
+      case SUCCESS:
+        return isSetSuccess();
       case RSE:
         return isSetRse();
       }
@@ -188043,6 +188101,15 @@ public boolean equals(createGroupResourceProfile_result that) {
       if (this == that)
         return true;
 
+      boolean this_present_success = true && this.isSetSuccess();
+      boolean that_present_success = true && that.isSetSuccess();
+      if (this_present_success || that_present_success) {
+        if (!(this_present_success && that_present_success))
+          return false;
+        if (!this.success.equals(that.success))
+          return false;
+      }
+
       boolean this_present_rse = true && this.isSetRse();
       boolean that_present_rse = true && that.isSetRse();
       if (this_present_rse || that_present_rse) {
@@ -188059,6 +188126,10 @@ public boolean equals(createGroupResourceProfile_result that) {
     public int hashCode() {
       int hashCode = 1;
 
+      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
+      if (isSetSuccess())
+        hashCode = hashCode * 8191 + success.hashCode();
+
       hashCode = hashCode * 8191 + ((isSetRse()) ? 131071 : 524287);
       if (isSetRse())
         hashCode = hashCode * 8191 + rse.hashCode();
@@ -188074,6 +188145,16 @@ public int compareTo(createGroupResourceProfile_result other) {
 
       int lastComparison = 0;
 
+      lastComparison = java.lang.Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetSuccess()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
       lastComparison = java.lang.Boolean.valueOf(isSetRse()).compareTo(other.isSetRse());
       if (lastComparison != 0) {
         return lastComparison;
@@ -188104,6 +188185,14 @@ public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.
       java.lang.StringBuilder sb = new java.lang.StringBuilder("createGroupResourceProfile_result(");
       boolean first = true;
 
+      sb.append("success:");
+      if (this.success == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.success);
+      }
+      first = false;
+      if (!first) sb.append(", ");
       sb.append("rse:");
       if (this.rse == null) {
         sb.append("null");
@@ -188154,6 +188243,14 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, createGroupResource
             break;
           }
           switch (schemeField.id) {
+            case 0: // SUCCESS
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.success = iprot.readString();
+                struct.setSuccessIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
             case 1: // RSE
               if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                 struct.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException();
@@ -188178,6 +188275,11 @@ public void write(org.apache.thrift.protocol.TProtocol oprot, createGroupResourc
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.success != null) {
+          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+          oprot.writeString(struct.success);
+          oprot.writeFieldEnd();
+        }
         if (struct.rse != null) {
           oprot.writeFieldBegin(RSE_FIELD_DESC);
           struct.rse.write(oprot);
@@ -188201,10 +188303,16 @@ public createGroupResourceProfile_resultTupleScheme getScheme() {
       public void write(org.apache.thrift.protocol.TProtocol prot, createGroupResourceProfile_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         java.util.BitSet optionals = new java.util.BitSet();
-        if (struct.isSetRse()) {
+        if (struct.isSetSuccess()) {
           optionals.set(0);
         }
-        oprot.writeBitSet(optionals, 1);
+        if (struct.isSetRse()) {
+          optionals.set(1);
+        }
+        oprot.writeBitSet(optionals, 2);
+        if (struct.isSetSuccess()) {
+          oprot.writeString(struct.success);
+        }
         if (struct.isSetRse()) {
           struct.rse.write(oprot);
         }
@@ -188213,8 +188321,12 @@ public void write(org.apache.thrift.protocol.TProtocol prot, createGroupResource
       @Override
       public void read(org.apache.thrift.protocol.TProtocol prot, createGroupResourceProfile_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
-        java.util.BitSet incoming = iprot.readBitSet(1);
+        java.util.BitSet incoming = iprot.readBitSet(2);
         if (incoming.get(0)) {
+          struct.success = iprot.readString();
+          struct.setSuccessIsSet(true);
+        }
+        if (incoming.get(1)) {
           struct.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException();
           struct.rse.read(iprot);
           struct.setRseIsSet(true);
@@ -190604,15 +190716,18 @@ public void read(org.apache.thrift.protocol.TProtocol prot, removeGroupResourceP
     private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getGroupResourceList_args");
 
     private static final org.apache.thrift.protocol.TField GATEWAY_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayId", org.apache.thrift.protocol.TType.STRING, (short)1);
+    private static final org.apache.thrift.protocol.TField ACCESSIBLE_GROUP_RES_PROFILE_IDS_FIELD_DESC = new org.apache.thrift.protocol.TField("accessibleGroupResProfileIds", org.apache.thrift.protocol.TType.LIST, (short)2);
 
     private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getGroupResourceList_argsStandardSchemeFactory();
     private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getGroupResourceList_argsTupleSchemeFactory();
 
     public java.lang.String gatewayId; // required
+    public java.util.List<java.lang.String> accessibleGroupResProfileIds; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     public enum _Fields implements org.apache.thrift.TFieldIdEnum {
-      GATEWAY_ID((short)1, "gatewayId");
+      GATEWAY_ID((short)1, "gatewayId"),
+      ACCESSIBLE_GROUP_RES_PROFILE_IDS((short)2, "accessibleGroupResProfileIds");
 
       private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
@@ -190629,6 +190744,8 @@ public static _Fields findByThriftId(int fieldId) {
         switch(fieldId) {
           case 1: // GATEWAY_ID
             return GATEWAY_ID;
+          case 2: // ACCESSIBLE_GROUP_RES_PROFILE_IDS
+            return ACCESSIBLE_GROUP_RES_PROFILE_IDS;
           default:
             return null;
         }
@@ -190674,6 +190791,9 @@ public short getThriftFieldId() {
       java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
       tmpMap.put(_Fields.GATEWAY_ID, new org.apache.thrift.meta_data.FieldMetaData("gatewayId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.ACCESSIBLE_GROUP_RES_PROFILE_IDS, new org.apache.thrift.meta_data.FieldMetaData("accessibleGroupResProfileIds", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+              new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
       org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getGroupResourceList_args.class, metaDataMap);
     }
@@ -190682,10 +190802,12 @@ public getGroupResourceList_args() {
     }
 
     public getGroupResourceList_args(
-      java.lang.String gatewayId)
+      java.lang.String gatewayId,
+      java.util.List<java.lang.String> accessibleGroupResProfileIds)
     {
       this();
       this.gatewayId = gatewayId;
+      this.accessibleGroupResProfileIds = accessibleGroupResProfileIds;
     }
 
     /**
@@ -190695,6 +190817,10 @@ public getGroupResourceList_args(getGroupResourceList_args other) {
       if (other.isSetGatewayId()) {
         this.gatewayId = other.gatewayId;
       }
+      if (other.isSetAccessibleGroupResProfileIds()) {
+        java.util.List<java.lang.String> __this__accessibleGroupResProfileIds = new java.util.ArrayList<java.lang.String>(other.accessibleGroupResProfileIds);
+        this.accessibleGroupResProfileIds = __this__accessibleGroupResProfileIds;
+      }
     }
 
     public getGroupResourceList_args deepCopy() {
@@ -190704,6 +190830,7 @@ public getGroupResourceList_args deepCopy() {
     @Override
     public void clear() {
       this.gatewayId = null;
+      this.accessibleGroupResProfileIds = null;
     }
 
     public java.lang.String getGatewayId() {
@@ -190730,6 +190857,45 @@ public void setGatewayIdIsSet(boolean value) {
       }
     }
 
+    public int getAccessibleGroupResProfileIdsSize() {
+      return (this.accessibleGroupResProfileIds == null) ? 0 : this.accessibleGroupResProfileIds.size();
+    }
+
+    public java.util.Iterator<java.lang.String> getAccessibleGroupResProfileIdsIterator() {
+      return (this.accessibleGroupResProfileIds == null) ? null : this.accessibleGroupResProfileIds.iterator();
+    }
+
+    public void addToAccessibleGroupResProfileIds(java.lang.String elem) {
+      if (this.accessibleGroupResProfileIds == null) {
+        this.accessibleGroupResProfileIds = new java.util.ArrayList<java.lang.String>();
+      }
+      this.accessibleGroupResProfileIds.add(elem);
+    }
+
+    public java.util.List<java.lang.String> getAccessibleGroupResProfileIds() {
+      return this.accessibleGroupResProfileIds;
+    }
+
+    public getGroupResourceList_args setAccessibleGroupResProfileIds(java.util.List<java.lang.String> accessibleGroupResProfileIds) {
+      this.accessibleGroupResProfileIds = accessibleGroupResProfileIds;
+      return this;
+    }
+
+    public void unsetAccessibleGroupResProfileIds() {
+      this.accessibleGroupResProfileIds = null;
+    }
+
+    /** Returns true if field accessibleGroupResProfileIds is set (has been assigned a value) and false otherwise */
+    public boolean isSetAccessibleGroupResProfileIds() {
+      return this.accessibleGroupResProfileIds != null;
+    }
+
+    public void setAccessibleGroupResProfileIdsIsSet(boolean value) {
+      if (!value) {
+        this.accessibleGroupResProfileIds = null;
+      }
+    }
+
     public void setFieldValue(_Fields field, java.lang.Object value) {
       switch (field) {
       case GATEWAY_ID:
@@ -190740,6 +190906,14 @@ public void setFieldValue(_Fields field, java.lang.Object value) {
         }
         break;
 
+      case ACCESSIBLE_GROUP_RES_PROFILE_IDS:
+        if (value == null) {
+          unsetAccessibleGroupResProfileIds();
+        } else {
+          setAccessibleGroupResProfileIds((java.util.List<java.lang.String>)value);
+        }
+        break;
+
       }
     }
 
@@ -190748,6 +190922,9 @@ public void setFieldValue(_Fields field, java.lang.Object value) {
       case GATEWAY_ID:
         return getGatewayId();
 
+      case ACCESSIBLE_GROUP_RES_PROFILE_IDS:
+        return getAccessibleGroupResProfileIds();
+
       }
       throw new java.lang.IllegalStateException();
     }
@@ -190761,6 +190938,8 @@ public boolean isSet(_Fields field) {
       switch (field) {
       case GATEWAY_ID:
         return isSetGatewayId();
+      case ACCESSIBLE_GROUP_RES_PROFILE_IDS:
+        return isSetAccessibleGroupResProfileIds();
       }
       throw new java.lang.IllegalStateException();
     }
@@ -190789,6 +190968,15 @@ public boolean equals(getGroupResourceList_args that) {
           return false;
       }
 
+      boolean this_present_accessibleGroupResProfileIds = true && this.isSetAccessibleGroupResProfileIds();
+      boolean that_present_accessibleGroupResProfileIds = true && that.isSetAccessibleGroupResProfileIds();
+      if (this_present_accessibleGroupResProfileIds || that_present_accessibleGroupResProfileIds) {
+        if (!(this_present_accessibleGroupResProfileIds && that_present_accessibleGroupResProfileIds))
+          return false;
+        if (!this.accessibleGroupResProfileIds.equals(that.accessibleGroupResProfileIds))
+          return false;
+      }
+
       return true;
     }
 
@@ -190800,6 +190988,10 @@ public int hashCode() {
       if (isSetGatewayId())
         hashCode = hashCode * 8191 + gatewayId.hashCode();
 
+      hashCode = hashCode * 8191 + ((isSetAccessibleGroupResProfileIds()) ? 131071 : 524287);
+      if (isSetAccessibleGroupResProfileIds())
+        hashCode = hashCode * 8191 + accessibleGroupResProfileIds.hashCode();
+
       return hashCode;
     }
 
@@ -190821,6 +191013,16 @@ public int compareTo(getGroupResourceList_args other) {
           return lastComparison;
         }
       }
+      lastComparison = java.lang.Boolean.valueOf(isSetAccessibleGroupResProfileIds()).compareTo(other.isSetAccessibleGroupResProfileIds());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetAccessibleGroupResProfileIds()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.accessibleGroupResProfileIds, other.accessibleGroupResProfileIds);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
       return 0;
     }
 
@@ -190848,6 +191050,14 @@ public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.
         sb.append(this.gatewayId);
       }
       first = false;
+      if (!first) sb.append(", ");
+      sb.append("accessibleGroupResProfileIds:");
+      if (this.accessibleGroupResProfileIds == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.accessibleGroupResProfileIds);
+      }
+      first = false;
       sb.append(")");
       return sb.toString();
     }
@@ -190857,6 +191067,9 @@ public void validate() throws org.apache.thrift.TException {
       if (gatewayId == null) {
         throw new org.apache.thrift.protocol.TProtocolException("Required field 'gatewayId' was not present! Struct: " + toString());
       }
+      if (accessibleGroupResProfileIds == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'accessibleGroupResProfileIds' was not present! Struct: " + toString());
+      }
       // check for sub-struct validity
     }
 
@@ -190902,6 +191115,24 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, getGroupResourceLis
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
+            case 2: // ACCESSIBLE_GROUP_RES_PROFILE_IDS
+              if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+                {
+                  org.apache.thrift.protocol.TList _list418 = iprot.readListBegin();
+                  struct.accessibleGroupResProfileIds = new java.util.ArrayList<java.lang.String>(_list418.size);
+                  java.lang.String _elem419;
+                  for (int _i420 = 0; _i420 < _list418.size; ++_i420)
+                  {
+                    _elem419 = iprot.readString();
+                    struct.accessibleGroupResProfileIds.add(_elem419);
+                  }
+                  iprot.readListEnd();
+                }
+                struct.setAccessibleGroupResProfileIdsIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
             default:
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
           }
@@ -190922,6 +191153,18 @@ public void write(org.apache.thrift.protocol.TProtocol oprot, getGroupResourceLi
           oprot.writeString(struct.gatewayId);
           oprot.writeFieldEnd();
         }
+        if (struct.accessibleGroupResProfileIds != null) {
+          oprot.writeFieldBegin(ACCESSIBLE_GROUP_RES_PROFILE_IDS_FIELD_DESC);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.accessibleGroupResProfileIds.size()));
+            for (java.lang.String _iter421 : struct.accessibleGroupResProfileIds)
+            {
+              oprot.writeString(_iter421);
+            }
+            oprot.writeListEnd();
+          }
+          oprot.writeFieldEnd();
+        }
         oprot.writeFieldStop();
         oprot.writeStructEnd();
       }
@@ -190940,6 +191183,13 @@ public getGroupResourceList_argsTupleScheme getScheme() {
       public void write(org.apache.thrift.protocol.TProtocol prot, getGroupResourceList_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         oprot.writeString(struct.gatewayId);
+        {
+          oprot.writeI32(struct.accessibleGroupResProfileIds.size());
+          for (java.lang.String _iter422 : struct.accessibleGroupResProfileIds)
+          {
+            oprot.writeString(_iter422);
+          }
+        }
       }
 
       @Override
@@ -190947,6 +191197,17 @@ public void read(org.apache.thrift.protocol.TProtocol prot, getGroupResourceList
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         struct.gatewayId = iprot.readString();
         struct.setGatewayIdIsSet(true);
+        {
+          org.apache.thrift.protocol.TList _list423 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.accessibleGroupResProfileIds = new java.util.ArrayList<java.lang.String>(_list423.size);
+          java.lang.String _elem424;
+          for (int _i425 = 0; _i425 < _list423.size; ++_i425)
+          {
+            _elem424 = iprot.readString();
+            struct.accessibleGroupResProfileIds.add(_elem424);
+          }
+        }
+        struct.setAccessibleGroupResProfileIdsIsSet(true);
       }
     }
 
@@ -191350,14 +191611,14 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, getGroupResourceLis
             case 0: // SUCCESS
               if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                 {
-                  org.apache.thrift.protocol.TList _list418 = iprot.readListBegin();
-                  struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile>(_list418.size);
-                  org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile _elem419;
-                  for (int _i420 = 0; _i420 < _list418.size; ++_i420)
+                  org.apache.thrift.protocol.TList _list426 = iprot.readListBegin();
+                  struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile>(_list426.size);
+                  org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile _elem427;
+                  for (int _i428 = 0; _i428 < _list426.size; ++_i428)
                   {
-                    _elem419 = new org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile();
-                    _elem419.read(iprot);
-                    struct.success.add(_elem419);
+                    _elem427 = new org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile();
+                    _elem427.read(iprot);
+                    struct.success.add(_elem427);
                   }
                   iprot.readListEnd();
                 }
@@ -191394,9 +191655,9 @@ public void write(org.apache.thrift.protocol.TProtocol oprot, getGroupResourceLi
           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.success.size()));
-            for (org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile _iter421 : struct.success)
+            for (org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile _iter429 : struct.success)
             {
-              _iter421.write(oprot);
+              _iter429.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -191435,9 +191696,9 @@ public void write(org.apache.thrift.protocol.TProtocol prot, getGroupResourceLis
         if (struct.isSetSuccess()) {
           {
             oprot.writeI32(struct.success.size());
-            for (org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile _iter422 : struct.success)
+            for (org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile _iter430 : struct.success)
             {
-              _iter422.write(oprot);
+              _iter430.write(oprot);
             }
           }
         }
@@ -191452,14 +191713,14 @@ public void read(org.apache.thrift.protocol.TProtocol prot, getGroupResourceList
         java.util.BitSet incoming = iprot.readBitSet(2);
         if (incoming.get(0)) {
           {
-            org.apache.thrift.protocol.TList _list423 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-            struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile>(_list423.size);
-            org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile _elem424;
-            for (int _i425 = 0; _i425 < _list423.size; ++_i425)
+            org.apache.thrift.protocol.TList _list431 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+            struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile>(_list431.size);
+            org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile _elem432;
+            for (int _i433 = 0; _i433 < _list431.size; ++_i433)
             {
-              _elem424 = new org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile();
-              _elem424.read(iprot);
-              struct.success.add(_elem424);
+              _elem432 = new org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile();
+              _elem432.read(iprot);
+              struct.success.add(_elem432);
             }
           }
           struct.setSuccessIsSet(true);
@@ -197374,14 +197635,14 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, getGroupComputeReso
             case 0: // SUCCESS
               if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                 {
-                  org.apache.thrift.protocol.TList _list426 = iprot.readListBegin();
-                  struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference>(_list426.size);
-                  org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference _elem427;
-                  for (int _i428 = 0; _i428 < _list426.size; ++_i428)
+                  org.apache.thrift.protocol.TList _list434 = iprot.readListBegin();
+                  struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference>(_list434.size);
+                  org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference _elem435;
+                  for (int _i436 = 0; _i436 < _list434.size; ++_i436)
                   {
-                    _elem427 = new org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference();
-                    _elem427.read(iprot);
-                    struct.success.add(_elem427);
+                    _elem435 = new org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference();
+                    _elem435.read(iprot);
+                    struct.success.add(_elem435);
                   }
                   iprot.readListEnd();
                 }
@@ -197418,9 +197679,9 @@ public void write(org.apache.thrift.protocol.TProtocol oprot, getGroupComputeRes
           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.success.size()));
-            for (org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference _iter429 : struct.success)
+            for (org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference _iter437 : struct.success)
             {
-              _iter429.write(oprot);
+              _iter437.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -197459,9 +197720,9 @@ public void write(org.apache.thrift.protocol.TProtocol prot, getGroupComputeReso
         if (struct.isSetSuccess()) {
           {
             oprot.writeI32(struct.success.size());
-            for (org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference _iter430 : struct.success)
+            for (org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference _iter438 : struct.success)
             {
-              _iter430.write(oprot);
+              _iter438.write(oprot);
             }
           }
         }
@@ -197476,14 +197737,14 @@ public void read(org.apache.thrift.protocol.TProtocol prot, getGroupComputeResou
         java.util.BitSet incoming = iprot.readBitSet(2);
         if (incoming.get(0)) {
           {
-            org.apache.thrift.protocol.TList _list431 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-            struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference>(_list431.size);
-            org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference _elem432;
-            for (int _i433 = 0; _i433 < _list431.size; ++_i433)
+            org.apache.thrift.protocol.TList _list439 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+            struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference>(_list439.size);
+            org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference _elem440;
+            for (int _i441 = 0; _i441 < _list439.size; ++_i441)
             {
-              _elem432 = new org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference();
-              _elem432.read(iprot);
-              struct.success.add(_elem432);
+              _elem440 = new org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference();
+              _elem440.read(iprot);
+              struct.success.add(_elem440);
             }
           }
           struct.setSuccessIsSet(true);
@@ -198251,14 +198512,14 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, getGroupBatchQueueR
             case 0: // SUCCESS
               if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                 {
-                  org.apache.thrift.protocol.TList _list434 = iprot.readListBegin();
-                  struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.BatchQueueResourcePolicy>(_list434.size);
-                  org.apache.airavata.model.appcatalog.groupresourceprofile.BatchQueueResourcePolicy _elem435;
-                  for (int _i436 = 0; _i436 < _list434.size; ++_i436)
+                  org.apache.thrift.protocol.TList _list442 = iprot.readListBegin();
+                  struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.BatchQueueResourcePolicy>(_list442.size);
+                  org.apache.airavata.model.appcatalog.groupresourceprofile.BatchQueueResourcePolicy _elem443;
+                  for (int _i444 = 0; _i444 < _list442.size; ++_i444)
                   {
-                    _elem435 = new org.apache.airavata.model.appcatalog.groupresourceprofile.BatchQueueResourcePolicy();
-                    _elem435.read(iprot);
-                    struct.success.add(_elem435);
+                    _elem443 = new org.apache.airavata.model.appcatalog.groupresourceprofile.BatchQueueResourcePolicy();
+                    _elem443.read(iprot);
+                    struct.success.add(_elem443);
                   }
                   iprot.readListEnd();
                 }
@@ -198295,9 +198556,9 @@ public void write(org.apache.thrift.protocol.TProtocol oprot, getGroupBatchQueue
           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.success.size()));
-            for (org.apache.airavata.model.appcatalog.groupresourceprofile.BatchQueueResourcePolicy _iter437 : struct.success)
+            for (org.apache.airavata.model.appcatalog.groupresourceprofile.BatchQueueResourcePolicy _iter445 : struct.success)
             {
-              _iter437.write(oprot);
+              _iter445.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -198336,9 +198597,9 @@ public void write(org.apache.thrift.protocol.TProtocol prot, getGroupBatchQueueR
         if (struct.isSetSuccess()) {
           {
             oprot.writeI32(struct.success.size());
-            for (org.apache.airavata.model.appcatalog.groupresourceprofile.BatchQueueResourcePolicy _iter438 : struct.success)
+            for (org.apache.airavata.model.appcatalog.groupresourceprofile.BatchQueueResourcePolicy _iter446 : struct.success)
             {
-              _iter438.write(oprot);
+              _iter446.write(oprot);
             }
           }
         }
@@ -198353,14 +198614,14 @@ public void read(org.apache.thrift.protocol.TProtocol prot, getGroupBatchQueueRe
         java.util.BitSet incoming = iprot.readBitSet(2);
         if (incoming.get(0)) {
           {
-            org.apache.thrift.protocol.TList _list439 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-            struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.BatchQueueResourcePolicy>(_list439.size);
-            org.apache.airavata.model.appcatalog.groupresourceprofile.BatchQueueResourcePolicy _elem440;
-            for (int _i441 = 0; _i441 < _list439.size; ++_i441)
+            org.apache.thrift.protocol.TList _list447 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+            struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.BatchQueueResourcePolicy>(_list447.size);
+            org.apache.airavata.model.appcatalog.groupresourceprofile.BatchQueueResourcePolicy _elem448;
+            for (int _i449 = 0; _i449 < _list447.size; ++_i449)
             {
-              _elem440 = new org.apache.airavata.model.appcatalog.groupresourceprofile.BatchQueueResourcePolicy();
-              _elem440.read(iprot);
-              struct.success.add(_elem440);
+              _elem448 = new org.apache.airavata.model.appcatalog.groupresourceprofile.BatchQueueResourcePolicy();
+              _elem448.read(iprot);
+              struct.success.add(_elem448);
             }
           }
           struct.setSuccessIsSet(true);
@@ -199128,14 +199389,14 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, getGroupComputeReso
             case 0: // SUCCESS
               if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                 {
-                  org.apache.thrift.protocol.TList _list442 = iprot.readListBegin();
-                  struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy>(_list442.size);
-                  org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy _elem443;
-                  for (int _i444 = 0; _i444 < _list442.size; ++_i444)
+                  org.apache.thrift.protocol.TList _list450 = iprot.readListBegin();
+                  struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy>(_list450.size);
+                  org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy _elem451;
+                  for (int _i452 = 0; _i452 < _list450.size; ++_i452)
                   {
-                    _elem443 = new org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy();
-                    _elem443.read(iprot);
-                    struct.success.add(_elem443);
+                    _elem451 = new org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy();
+                    _elem451.read(iprot);
+                    struct.success.add(_elem451);
                   }
                   iprot.readListEnd();
                 }
@@ -199172,9 +199433,9 @@ public void write(org.apache.thrift.protocol.TProtocol oprot, getGroupComputeRes
           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.success.size()));
-            for (org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy _iter445 : struct.success)
+            for (org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy _iter453 : struct.success)
             {
-              _iter445.write(oprot);
+              _iter453.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -199213,9 +199474,9 @@ public void write(org.apache.thrift.protocol.TProtocol prot, getGroupComputeReso
         if (struct.isSetSuccess()) {
           {
             oprot.writeI32(struct.success.size());
-            for (org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy _iter446 : struct.success)
+            for (org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy _iter454 : struct.success)
             {
-              _iter446.write(oprot);
+              _iter454.write(oprot);
             }
           }
         }
@@ -199230,14 +199491,14 @@ public void read(org.apache.thrift.protocol.TProtocol prot, getGroupComputeResou
         java.util.BitSet incoming = iprot.readBitSet(2);
         if (incoming.get(0)) {
           {
-            org.apache.thrift.protocol.TList _list447 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-            struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy>(_list447.size);
-            org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy _elem448;
-            for (int _i449 = 0; _i449 < _list447.size; ++_i449)
+            org.apache.thrift.protocol.TList _list455 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+            struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy>(_list455.size);
+            org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy _elem456;
+            for (int _i457 = 0; _i457 < _list455.size; ++_i457)
             {
-              _elem448 = new org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy();
-              _elem448.read(iprot);
-              struct.success.add(_elem448);
+              _elem456 = new org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy();
+              _elem456.read(iprot);
+              struct.success.add(_elem456);
             }
           }
           struct.setSuccessIsSet(true);
diff --git a/thrift-interface-descriptions/component-cpis/registry-api.thrift b/thrift-interface-descriptions/component-cpis/registry-api.thrift
index d9c7d1871f..a9aa926476 100644
--- a/thrift-interface-descriptions/component-cpis/registry-api.thrift
+++ b/thrift-interface-descriptions/component-cpis/registry-api.thrift
@@ -2571,7 +2571,7 @@ service RegistryService {
                * Group Resource Profile API methods
                *
                */
-               void createGroupResourceProfile(1: required group_resource_profile_model.GroupResourceProfile groupResourceProfile)
+               string createGroupResourceProfile(1: required group_resource_profile_model.GroupResourceProfile groupResourceProfile)
                         throws (1: registry_api_errors.RegistryServiceException rse)
 
                void updateGroupResourceProfile(1: required group_resource_profile_model.GroupResourceProfile groupResourceProfile)
@@ -2583,7 +2583,7 @@ service RegistryService {
                bool removeGroupResourceProfile(1: required string groupResourceProfileId)
                                     throws (1: registry_api_errors.RegistryServiceException rse)
 
-               list<group_resource_profile_model.GroupResourceProfile> getGroupResourceList(1: required string gatewayId)
+               list<group_resource_profile_model.GroupResourceProfile> getGroupResourceList(1: required string gatewayId, 2: required list<string> accessibleGroupResProfileIds)
                                 throws (1: registry_api_errors.RegistryServiceException rse)
 
                bool removeGroupComputePrefs(1: required string computeResourceId, 2: required string groupResourceProfileId)


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


> Update GroupResourceProfile methods in API server to use sharing API to enforce READ and WRITE rules
> ----------------------------------------------------------------------------------------------------
>
>                 Key: AIRAVATA-2697
>                 URL: https://issues.apache.org/jira/browse/AIRAVATA-2697
>             Project: Airavata
>          Issue Type: Bug
>            Reporter: Marcus Christie
>            Assignee: Sachin Kariyattin
>            Priority: Major
>




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message