This is an automated email from the ASF dual-hosted git repository.

yasith pushed a commit to branch feat/sdk-facade-migration
in repository https://gitbox.apache.org/repos/asf/airavata-portals.git

commit 97b9e696833f90e09785f93833699dc8b99d60a1
Author: yasithdev <[email protected]>
AuthorDate: Wed Apr 8 00:12:10 2026 -0500

    refactor: migrate API views.py from Thrift to SDK facade (95 call sites)
---
 .../django_airavata/apps/api/views.py              | 501 ++++++++++-----------
 1 file changed, 237 insertions(+), 264 deletions(-)

diff --git a/airavata-django-portal/django_airavata/apps/api/views.py 
b/airavata-django-portal/django_airavata/apps/api/views.py
index 1cca33e26..64c7bb186 100644
--- a/airavata-django-portal/django_airavata/apps/api/views.py
+++ b/airavata-django-portal/django_airavata/apps/api/views.py
@@ -5,6 +5,7 @@ import os
 import warnings
 from datetime import datetime, timedelta
 
+# TODO: verify proto import paths once SDK generated stubs are finalized
 from airavata.model.appcatalog.computeresource.ttypes import (
     CloudJobSubmission,
     GlobusJobSubmission,
@@ -32,9 +33,9 @@ from airavata.model.group.ttypes import ResourcePermissionType
 from airavata.model.user.ttypes import Status
 from airavata_django_portal_sdk import (
     experiment_util,
-    queue_settings_calculators,
     user_storage
 )
+from airavata_django_portal_sdk import queue_settings_calculators
 from django.conf import settings
 from django.contrib.auth import get_user_model
 from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
@@ -70,7 +71,6 @@ from . import (
     output_views,
     serializers,
     signals,
-    thrift_utils,
     tus,
     view_utils
 )
@@ -91,53 +91,44 @@ class GroupViewSet(APIBackedViewSet):
 
         class GroupResultsIterator(APIResultIterator):
             def get_results(self, limit=-1, offset=0):
-                group_manager = view.request.profile_service['group_manager']
-                groups = group_manager.getGroups(view.authz_token)
+                groups = view.request.airavata_client.sharing.get_groups()
                 end = offset + limit if limit > 0 else len(groups)
                 return groups[offset:end] if groups else []
 
         return GroupResultsIterator()
 
     def get_instance(self, lookup_value):
-        return self.request.profile_service['group_manager'].getGroup(
-            self.authz_token, lookup_value)
+        return self.request.airavata_client.sharing.get_group(lookup_value)
 
     def perform_create(self, serializer):
         group = serializer.save()
-        group_id = self.request.profile_service['group_manager'].createGroup(
-            self.authz_token, group)
+        group_id = self.request.airavata_client.sharing.create_group(group)
         group.id = group_id
         users_added_to_group = set(group.members) - {group.ownerId}
         self._send_users_added_to_group(users_added_to_group, group)
 
     def perform_update(self, serializer):
         group = serializer.save()
-        group_manager_client = self.request.profile_service['group_manager']
+        sharing_client = self.request.airavata_client.sharing
         if len(group._added_members) > 0:
-            group_manager_client.addUsersToGroup(
-                self.authz_token, group._added_members, group.id)
+            sharing_client.add_users_to_group(group._added_members, group.id)
             self._send_users_added_to_group(group._added_members, group)
         if len(group._removed_members) > 0:
-            group_manager_client.removeUsersFromGroup(
-                self.authz_token, group._removed_members, group.id)
+            sharing_client.remove_users_from_group(group._removed_members, 
group.id)
         if len(group._added_admins) > 0:
-            group_manager_client.addGroupAdmins(
-                self.authz_token, group.id, group._added_admins)
+            sharing_client.add_group_admins(group.id, group._added_admins)
         if len(group._removed_admins) > 0:
-            group_manager_client.removeGroupAdmins(
-                self.authz_token, group.id, group._removed_admins)
-        group_manager_client.updateGroup(self.authz_token, group)
+            sharing_client.remove_group_admins(group.id, group._removed_admins)
+        sharing_client.update_group(group)
 
     def perform_destroy(self, group):
-        group_manager_client = self.request.profile_service['group_manager']
-        group_manager_client.deleteGroup(
-            self.authz_token, group.id, group.ownerId)
+        self.request.airavata_client.sharing.delete_group(group.id, 
group.ownerId)
 
     def _send_users_added_to_group(self, internal_user_ids, group):
         for internal_user_id in internal_user_ids:
             user_id, gateway_id = internal_user_id.rsplit("@", maxsplit=1)
-            user_profile = 
self.request.profile_service['user_profile'].getUserProfileById(
-                self.authz_token, user_id, gateway_id)
+            user_profile = 
self.request.airavata_client.iam.get_user_profile_by_id(
+                user_id, gateway_id)
             signals.user_added_to_group.send(
                 sender=self.__class__,
                 user=user_profile,
@@ -156,42 +147,41 @@ class ProjectViewSet(APIBackedViewSet):
 
         class ProjectResultIterator(APIResultIterator):
             def get_results(self, limit=-1, offset=0):
-                return view.request.airavata_client.getUserProjects(
-                    view.authz_token, view.gateway_id, view.username, limit, 
offset)
+                return view.request.airavata_client.research.get_user_projects(
+                    view.gateway_id, view.username, limit, offset)
 
         return ProjectResultIterator()
 
     def get_instance(self, lookup_value):
-        return self.request.airavata_client.getProject(
-            self.authz_token, lookup_value)
+        return self.request.airavata_client.research.get_project(lookup_value)
 
     def perform_create(self, serializer):
         project = serializer.save(
             owner=self.username,
             gatewayId=self.gateway_id)
-        project_id = self.request.airavata_client.createProject(
-            self.authz_token, self.gateway_id, project)
+        project_id = self.request.airavata_client.research.create_project(
+            self.gateway_id, project)
         project.projectID = project_id
         self._update_most_recent_project(project_id)
 
     def perform_update(self, serializer):
         project = serializer.save()
-        self.request.airavata_client.updateProject(
-            self.authz_token, project.projectID, project)
+        self.request.airavata_client.research.update_project(
+            project.projectID, project)
         self._update_most_recent_project(project.projectID)
 
     @action(detail=False)
     def list_all(self, request):
-        projects = self.request.airavata_client.getUserProjects(
-            self.authz_token, self.gateway_id, self.username, -1, 0)
+        projects = self.request.airavata_client.research.get_user_projects(
+            self.gateway_id, self.username, -1, 0)
         serializer = serializers.ProjectSerializer(
             projects, many=True, context={'request': request})
         return Response(serializer.data)
 
     @action(detail=True)
     def experiments(self, request, project_id=None):
-        experiments = request.airavata_client.getExperimentsInProject(
-            self.authz_token, project_id, -1, 0)
+        experiments = 
request.airavata_client.research.get_experiments_in_project(
+            project_id, -1, 0)
         serializer = serializers.ExperimentSerializer(
             experiments, many=True, context={'request': request})
         return Response(serializer.data)
@@ -210,15 +200,14 @@ class ExperimentViewSet(mixins.CreateModelMixin,
     lookup_field = 'experiment_id'
 
     def get_instance(self, lookup_value):
-        return self.request.airavata_client.getExperiment(
-            self.authz_token, lookup_value)
+        return 
self.request.airavata_client.research.get_experiment(lookup_value)
 
     def perform_create(self, serializer):
         experiment = serializer.save(
             gatewayId=self.gateway_id,
             userName=self.username)
-        experiment_id = self.request.airavata_client.createExperiment(
-            self.authz_token, self.gateway_id, experiment)
+        experiment_id = 
self.request.airavata_client.research.create_experiment(
+            self.gateway_id, experiment)
         self._update_workspace_preferences(
             project_id=experiment.projectId,
             
group_resource_profile_id=experiment.userConfigurationData.groupResourceProfileId,
@@ -229,8 +218,8 @@ class ExperimentViewSet(mixins.CreateModelMixin,
         experiment = serializer.save(
             gatewayId=self.gateway_id,
             userName=self.username)
-        self.request.airavata_client.updateExperiment(
-            self.authz_token, experiment.experimentId, experiment)
+        self.request.airavata_client.research.update_experiment(
+            experiment.experimentId, experiment)
         self._update_workspace_preferences(
             project_id=experiment.projectId,
             
group_resource_profile_id=experiment.userConfigurationData.groupResourceProfileId,
@@ -239,12 +228,12 @@ class ExperimentViewSet(mixins.CreateModelMixin,
     @action(methods=['post'], detail=True)
     def launch(self, request, experiment_id=None):
         try:
-            experiment = request.airavata_client.getExperiment(
-                self.authz_token, experiment_id)
+            experiment = request.airavata_client.research.get_experiment(
+                experiment_id)
             if (experiment.enableEmailNotification):
                 experiment.emailAddresses = [request.user.email]
-            request.airavata_client.updateExperiment(
-                self.authz_token, experiment_id, experiment)
+            request.airavata_client.research.update_experiment(
+                experiment_id, experiment)
             experiment_util.launch(request, experiment_id)
             return Response({'success': True})
         except Exception as e:
@@ -253,8 +242,7 @@ class ExperimentViewSet(mixins.CreateModelMixin,
 
     @action(methods=['get'], detail=True)
     def jobs(self, request, experiment_id=None):
-        jobs = request.airavata_client.getJobDetails(
-            self.authz_token, experiment_id)
+        jobs = request.airavata_client.research.get_job_details(experiment_id)
         serializer = serializers.JobSerializer(
             jobs, many=True, context={'request': request})
         return Response(serializer.data)
@@ -262,8 +250,8 @@ class ExperimentViewSet(mixins.CreateModelMixin,
     @action(methods=['post'], detail=True)
     def clone(self, request, experiment_id=None):
         cloned_experiment_id = experiment_util.clone(request, experiment_id)
-        cloned_experiment = request.airavata_client.getExperiment(
-            self.authz_token, cloned_experiment_id)
+        cloned_experiment = request.airavata_client.research.get_experiment(
+            cloned_experiment_id)
         serializer = self.serializer_class(
             cloned_experiment, context={'request': request})
         return Response(serializer.data)
@@ -271,8 +259,8 @@ class ExperimentViewSet(mixins.CreateModelMixin,
     @action(methods=['post'], detail=True)
     def cancel(self, request, experiment_id=None):
         try:
-            request.airavata_client.terminateExperiment(
-                request.authz_token, experiment_id, self.gateway_id)
+            request.airavata_client.research.terminate_experiment(
+                experiment_id, self.gateway_id)
             return Response({'success': True})
         except Exception as e:
             log.exception("Cancel action has thrown the following error", 
extra={'request': request})
@@ -317,8 +305,8 @@ class ExperimentSearchViewSet(mixins.ListModelMixin, 
GenericAPIBackedViewSet):
 
         class ExperimentSearchResultIterator(APIResultIterator):
             def get_results(self, limit=-1, offset=0):
-                return view.request.airavata_client.searchExperiments(
-                    view.authz_token, view.gateway_id, view.username, filters,
+                return 
view.request.airavata_client.research.search_experiments(
+                    view.gateway_id, view.username, filters,
                     limit, offset)
 
         # Preserve query parameters when moving to next and previous links
@@ -336,11 +324,10 @@ class FullExperimentViewSet(mixins.RetrieveModelMixin,
     def get_instance(self, lookup_value):
         """Get FullExperiment instance with resolved references."""
         # TODO: move loading experiment and references to airavata_sdk?
-        experimentModel = self.request.airavata_client.getExperiment(
-            self.authz_token, lookup_value)
+        experimentModel = self.request.airavata_client.research.get_experiment(
+            lookup_value)
         outputDataProducts = [
-            self.request.airavata_client.getDataProduct(self.authz_token,
-                                                        output.value)
+            
self.request.airavata_client.research.get_data_product(output.value)
             for output in experimentModel.experimentOutputs
             if (output.value and
                 output.value.startswith('airavata-dp') and
@@ -348,7 +335,7 @@ class FullExperimentViewSet(mixins.RetrieveModelMixin,
                                 DataType.STDOUT,
                                 DataType.STDERR))]
         outputDataProducts += [
-            self.request.airavata_client.getDataProduct(self.authz_token, dp)
+            self.request.airavata_client.research.get_data_product(dp)
             for output in experimentModel.experimentOutputs
             if (output.value and
                 output.type == DataType.URI_COLLECTION)
@@ -356,16 +343,15 @@ class FullExperimentViewSet(mixins.RetrieveModelMixin,
             if output.value.startswith('airavata-dp')]
         appInterfaceId = experimentModel.executionId
         try:
-            applicationInterface = self.request.airavata_client \
-                .getApplicationInterface(self.authz_token, appInterfaceId)
+            applicationInterface = self.request.airavata_client.research \
+                .get_application_interface(appInterfaceId)
         except Exception as e:
             log.warning(f"Failed to load app interface: {e}")
             applicationInterface = None
         exp_output_views = output_views.get_output_views(
             self.request, experimentModel, applicationInterface)
         inputDataProducts = [
-            self.request.airavata_client.getDataProduct(self.authz_token,
-                                                        inp.value)
+            self.request.airavata_client.research.get_data_product(inp.value)
             for inp in experimentModel.experimentInputs
             if (inp.value and
                 inp.value.startswith('airavata-dp') and
@@ -373,7 +359,7 @@ class FullExperimentViewSet(mixins.RetrieveModelMixin,
                              DataType.STDOUT,
                              DataType.STDERR))]
         inputDataProducts += [
-            self.request.airavata_client.getDataProduct(self.authz_token, dp)
+            self.request.airavata_client.research.get_data_product(dp)
             for inp in experimentModel.experimentInputs
             if (inp.value and
                 inp.type == DataType.URI_COLLECTION)
@@ -383,8 +369,8 @@ class FullExperimentViewSet(mixins.RetrieveModelMixin,
         try:
             if applicationInterface is not None:
                 appModuleId = applicationInterface.applicationModules[0]
-                applicationModule = self.request.airavata_client \
-                    .getApplicationModule(self.authz_token, appModuleId)
+                applicationModule = self.request.airavata_client.research \
+                    .get_application_module(appModuleId)
             else:
                 log.warning(
                     "Cannot load application model since app interface failed 
to load")
@@ -397,24 +383,23 @@ class FullExperimentViewSet(mixins.RetrieveModelMixin,
             comp_res_sched = user_conf.computationalResourceScheduling
             compute_resource_id = comp_res_sched.resourceHostId
         try:
-            compute_resource = self.request.airavata_client.getComputeResource(
-                self.authz_token, compute_resource_id) \
+            compute_resource = 
self.request.airavata_client.compute.get_compute_resource(
+                compute_resource_id) \
                 if compute_resource_id else None
         except Exception:
             log.exception("Failed to load compute resource for {}".format(
                 compute_resource_id), extra={'request': self.request})
             compute_resource = None
-        if self.request.airavata_client.userHasAccess(
-                self.authz_token,
+        if self.request.airavata_client.sharing.user_has_access(
                 experimentModel.projectId,
                 ResourcePermissionType.READ):
-            project = self.request.airavata_client.getProject(
-                self.authz_token, experimentModel.projectId)
+            project = self.request.airavata_client.research.get_project(
+                experimentModel.projectId)
         else:
             # User may not have access to project, only experiment
             project = None
-        job_details = self.request.airavata_client.getJobDetails(
-            self.authz_token, lookup_value)
+        job_details = self.request.airavata_client.research.get_job_details(
+            lookup_value)
         full_experiment = serializers.FullExperiment(
             experimentModel,
             project=project,
@@ -432,32 +417,32 @@ class ApplicationModuleViewSet(APIBackedViewSet):
     lookup_field = 'app_module_id'
 
     def get_list(self):
-        return self.request.airavata_client.getAccessibleAppModules(
-            self.authz_token, self.gateway_id)
+        return 
self.request.airavata_client.research.get_accessible_app_modules(
+            self.gateway_id)
 
     def get_instance(self, lookup_value):
-        return self.request.airavata_client.getApplicationModule(
-            self.authz_token, lookup_value)
+        return self.request.airavata_client.research.get_application_module(
+            lookup_value)
 
     def perform_create(self, serializer):
         app_module = serializer.save()
-        app_module_id = self.request.airavata_client.registerApplicationModule(
-            self.authz_token, self.gateway_id, app_module)
+        app_module_id = 
self.request.airavata_client.research.register_application_module(
+            self.gateway_id, app_module)
         app_module.appModuleId = app_module_id
 
     def perform_update(self, serializer):
         app_module = serializer.save()
-        self.request.airavata_client.updateApplicationModule(
-            self.authz_token, app_module.appModuleId, app_module)
+        self.request.airavata_client.research.update_application_module(
+            app_module.appModuleId, app_module)
 
     def perform_destroy(self, instance):
-        self.request.airavata_client.deleteApplicationModule(
-            self.authz_token, instance.appModuleId)
+        self.request.airavata_client.research.delete_application_module(
+            instance.appModuleId)
 
     @action(detail=True)
     def application_interface(self, request, app_module_id):
-        all_app_interfaces = 
request.airavata_client.getAllApplicationInterfaces(
-            self.authz_token, self.gateway_id)
+        all_app_interfaces = 
request.airavata_client.research.get_all_application_interfaces(
+            self.gateway_id)
         app_interfaces = []
         for app_interface in all_app_interfaces:
             if not app_interface.applicationModules:
@@ -482,8 +467,8 @@ class ApplicationModuleViewSet(APIBackedViewSet):
 
     @action(detail=True)
     def application_deployments(self, request, app_module_id):
-        all_deployments = 
self.request.airavata_client.getAllApplicationDeployments(
-            self.authz_token, self.gateway_id)
+        all_deployments = 
self.request.airavata_client.research.get_all_application_deployments(
+            self.gateway_id)
         app_deployments = [
             dep for dep in all_deployments if dep.appModuleId == app_module_id]
         serializer = serializers.ApplicationDeploymentDescriptionSerializer(
@@ -528,8 +513,8 @@ class ApplicationModuleViewSet(APIBackedViewSet):
 
     @action(detail=False)
     def list_all(self, request, format=None):
-        all_modules = self.request.airavata_client.getAllAppModules(
-            self.authz_token, self.gateway_id)
+        all_modules = 
self.request.airavata_client.research.get_all_app_modules(
+            self.gateway_id)
         serializer = self.serializer_class(
             all_modules, many=True, context={'request': request})
         return Response(serializer.data)
@@ -540,17 +525,17 @@ class ApplicationInterfaceViewSet(APIBackedViewSet):
     lookup_field = 'app_interface_id'
 
     def get_list(self):
-        return self.request.airavata_client.getAllApplicationInterfaces(
-            self.authz_token, self.gateway_id)
+        return 
self.request.airavata_client.research.get_all_application_interfaces(
+            self.gateway_id)
 
     def get_instance(self, lookup_value):
         try:
-            return self.request.airavata_client.getApplicationInterface(
-                self.authz_token, lookup_value)
+            return 
self.request.airavata_client.research.get_application_interface(
+                lookup_value)
         except Exception:
             # If it failed to load, check to see if it exists at all
-            all_interfaces = 
self.request.airavata_client.getAllApplicationInterfaces(
-                self.authz_token, self.gateway_id)
+            all_interfaces = 
self.request.airavata_client.research.get_all_application_interfaces(
+                self.gateway_id)
             interface_ids = map(lambda i: i.applicationInterfaceId, 
all_interfaces)
             if lookup_value not in interface_ids:
                 raise Http404("Application interface does not exist")
@@ -561,21 +546,20 @@ class ApplicationInterfaceViewSet(APIBackedViewSet):
         application_interface = serializer.save()
         self._update_input_metadata(application_interface)
         log.debug("application_interface: {}".format(application_interface))
-        app_interface_id = 
self.request.airavata_client.registerApplicationInterface(
-            self.authz_token, self.gateway_id, application_interface)
+        app_interface_id = 
self.request.airavata_client.research.register_application_interface(
+            self.gateway_id, application_interface)
         application_interface.applicationInterfaceId = app_interface_id
 
     def perform_update(self, serializer):
         application_interface = serializer.save()
         self._update_input_metadata(application_interface)
-        self.request.airavata_client.updateApplicationInterface(
-            self.authz_token,
+        self.request.airavata_client.research.update_application_interface(
             application_interface.applicationInterfaceId,
             application_interface)
 
     def perform_destroy(self, instance):
-        self.request.airavata_client.deleteApplicationInterface(
-            self.authz_token, instance.applicationInterfaceId)
+        self.request.airavata_client.research.delete_application_interface(
+            instance.applicationInterfaceId)
 
     def _update_input_metadata(self, app_interface):
         for app_input in app_interface.applicationInputs:
@@ -594,8 +578,8 @@ class ApplicationInterfaceViewSet(APIBackedViewSet):
 
     @action(detail=True)
     def compute_resources(self, request, app_interface_id):
-        compute_resources = 
request.airavata_client.getAvailableAppInterfaceComputeResources(
-            self.authz_token, app_interface_id)
+        compute_resources = 
request.airavata_client.research.get_available_app_interface_compute_resources(
+            app_interface_id)
         return Response(compute_resources)
 
 
@@ -612,38 +596,38 @@ class ApplicationDeploymentViewSet(APIBackedViewSet):
             raise ParseError("Query params appModuleId and "
                              "groupResourceProfileId are required together.")
         if app_module_id and group_resource_profile_id:
-            return 
self.request.airavata_client.getApplicationDeploymentsForAppModuleAndGroupResourceProfile(
-                self.authz_token, app_module_id, group_resource_profile_id)
+            return 
self.request.airavata_client.research.get_application_deployments_for_app_module_and_group_resource_profile(
+                app_module_id, group_resource_profile_id)
         else:
-            return 
self.request.airavata_client.getAccessibleApplicationDeployments(
-                self.authz_token, self.gateway_id, ResourcePermissionType.READ)
+            return 
self.request.airavata_client.research.get_accessible_application_deployments(
+                self.gateway_id, ResourcePermissionType.READ)
 
     def get_instance(self, lookup_value):
-        return self.request.airavata_client.getApplicationDeployment(
-            self.authz_token, lookup_value)
+        return 
self.request.airavata_client.research.get_application_deployment(
+            lookup_value)
 
     def perform_create(self, serializer):
         application_deployment = serializer.save()
-        app_deployment_id = 
self.request.airavata_client.registerApplicationDeployment(
-            self.authz_token, self.gateway_id, application_deployment)
+        app_deployment_id = 
self.request.airavata_client.research.register_application_deployment(
+            self.gateway_id, application_deployment)
         application_deployment.appDeploymentId = app_deployment_id
 
     def perform_update(self, serializer):
         application_deployment = serializer.save()
-        self.request.airavata_client.updateApplicationDeployment(
-            self.authz_token, application_deployment.appDeploymentId, 
application_deployment)
+        self.request.airavata_client.research.update_application_deployment(
+            application_deployment.appDeploymentId, application_deployment)
 
     def perform_destroy(self, instance):
-        self.request.airavata_client.deleteApplicationDeployment(
-            self.authz_token, instance.appDeploymentId)
+        self.request.airavata_client.research.delete_application_deployment(
+            instance.appDeploymentId)
 
     @action(detail=True)
     def queues(self, request, app_deployment_id):
         """Return queues for this deployment with defaults overridden by 
deployment defaults if they exist"""
-        app_deployment = self.request.airavata_client.getApplicationDeployment(
-            self.authz_token, app_deployment_id)
-        compute_resource = request.airavata_client.getComputeResource(
-            request.authz_token, app_deployment.computeHostId)
+        app_deployment = 
self.request.airavata_client.research.get_application_deployment(
+            app_deployment_id)
+        compute_resource = 
request.airavata_client.compute.get_compute_resource(
+            app_deployment.computeHostId)
         # Override defaults with app deployment default queue, if defined
         batch_queues = []
         for batch_queue in compute_resource.batchQueues:
@@ -667,21 +651,19 @@ class ComputeResourceViewSet(mixins.RetrieveModelMixin,
     lookup_field = 'compute_resource_id'
 
     def get_instance(self, lookup_value, format=None):
-        return self.request.airavata_client.getComputeResource(
-            self.authz_token, lookup_value)
+        return self.request.airavata_client.compute.get_compute_resource(
+            lookup_value)
 
     @action(detail=False)
     def all_names(self, request, format=None):
         """Return a map of compute resource names keyed by resource id."""
         return Response(
-            request.airavata_client.getAllComputeResourceNames(
-                request.authz_token))
+            request.airavata_client.compute.get_all_compute_resource_names())
 
     @action(detail=False)
     def all_names_list(self, request, format=None):
         """Return a list of compute resource names keyed by resource id."""
-        all_names = request.airavata_client.getAllComputeResourceNames(
-            request.authz_token)
+        all_names = 
request.airavata_client.compute.get_all_compute_resource_names()
         return Response([
             {
                 'host_id': host_id,
@@ -694,8 +676,8 @@ class ComputeResourceViewSet(mixins.RetrieveModelMixin,
 
     @action(detail=True)
     def queues(self, request, compute_resource_id, format=None):
-        details = request.airavata_client.getComputeResource(
-            request.authz_token, compute_resource_id)
+        details = request.airavata_client.compute.get_compute_resource(
+            compute_resource_id)
         serializer = self.serializer_class(instance=details,
                                            context={'request': request})
         data = serializer.data
@@ -707,8 +689,9 @@ class LocalJobSubmissionView(APIView):
 
     def get(self, request, format=None):
         job_submission_id = request.query_params["id"]
-        local_job_submission = request.airavata_client.getLocalJobSubmission(
-            request.authz_token, job_submission_id)
+        local_job_submission = 
request.airavata_client.compute.get_local_job_submission(
+            job_submission_id)
+        from . import thrift_utils
         return Response(
             thrift_utils.create_serializer(
                 LOCALSubmission,
@@ -720,8 +703,9 @@ class CloudJobSubmissionView(APIView):
 
     def get(self, request, format=None):
         job_submission_id = request.query_params["id"]
-        job_submission = request.airavata_client.getCloudJobSubmission(
-            request.authz_token, job_submission_id)
+        job_submission = 
request.airavata_client.compute.get_cloud_job_submission(
+            job_submission_id)
+        from . import thrift_utils
         return Response(
             thrift_utils.create_serializer(
                 CloudJobSubmission,
@@ -733,8 +717,9 @@ class GlobusJobSubmissionView(APIView):
 
     def get(self, request, format=None):
         job_submission_id = request.query_params["id"]
-        job_submission = request.airavata_client.getClo(
-            request.authz_token, job_submission_id)
+        job_submission = 
request.airavata_client.compute.get_globus_job_submission(
+            job_submission_id)
+        from . import thrift_utils
         return Response(
             thrift_utils.create_serializer(
                 GlobusJobSubmission,
@@ -746,8 +731,9 @@ class SshJobSubmissionView(APIView):
 
     def get(self, request, format=None):
         job_submission_id = request.query_params["id"]
-        job_submission = request.airavata_client.getSSHJobSubmission(
-            request.authz_token, job_submission_id)
+        job_submission = 
request.airavata_client.compute.get_ssh_job_submission(
+            job_submission_id)
+        from . import thrift_utils
         return Response(
             thrift_utils.create_serializer(
                 SSHJobSubmission,
@@ -759,8 +745,9 @@ class UnicoreJobSubmissionView(APIView):
 
     def get(self, request, format=None):
         job_submission_id = request.query_params["id"]
-        job_submission = request.airavata_client.getUnicoreJobSubmission(
-            request.authz_token, job_submission_id)
+        job_submission = 
request.airavata_client.compute.get_unicore_job_submission(
+            job_submission_id)
+        from . import thrift_utils
         return Response(
             thrift_utils.create_serializer(
                 UnicoreJobSubmission,
@@ -772,8 +759,9 @@ class GridFtpDataMovementView(APIView):
 
     def get(self, request, format=None):
         data_movement_id = request.query_params["id"]
-        data_movement = request.airavata_client.getGridFTPDataMovement(
-            request.authz_token, data_movement_id)
+        data_movement = 
request.airavata_client.compute.get_grid_ftp_data_movement(
+            data_movement_id)
+        from . import thrift_utils
         return Response(
             thrift_utils.create_serializer(
                 GridFTPDataMovement,
@@ -785,8 +773,9 @@ class ScpDataMovementView(APIView):
 
     def get(self, request, format=None):
         data_movement_id = request.query_params["id"]
-        data_movement = request.airavata_client.getSCPDataMovement(
-            request.authz_token, data_movement_id)
+        data_movement = request.airavata_client.compute.get_scp_data_movement(
+            data_movement_id)
+        from . import thrift_utils
         return Response(
             thrift_utils.create_serializer(
                 SCPDataMovement,
@@ -798,8 +787,9 @@ class UnicoreDataMovementView(APIView):
 
     def get(self, request, format=None):
         data_movement_id = request.query_params["id"]
-        data_movement = request.airavata_client.getUnicoreDataMovement(
-            request.authz_token, data_movement_id)
+        data_movement = 
request.airavata_client.compute.get_unicore_data_movement(
+            data_movement_id)
+        from . import thrift_utils
         return Response(
             thrift_utils.create_serializer(
                 UnicoreDataMovement,
@@ -811,8 +801,9 @@ class LocalDataMovementView(APIView):
 
     def get(self, request, format=None):
         data_movement_id = request.query_params["id"]
-        data_movement = request.airavata_client.getLocalDataMovement(
-            request.authz_token, data_movement_id)
+        data_movement = 
request.airavata_client.compute.get_local_data_movement(
+            data_movement_id)
+        from . import thrift_utils
         return Response(
             thrift_utils.create_serializer(
                 LOCALDataMovement,
@@ -826,16 +817,16 @@ class DataProductView(APIView):
 
     def get(self, request, format=None):
         data_product_uri = request.query_params['product-uri']
-        data_product = request.airavata_client.getDataProduct(
-            request.authz_token, data_product_uri)
+        data_product = request.airavata_client.research.get_data_product(
+            data_product_uri)
         serializer = self.serializer_class(
             data_product, context={'request': request})
         return Response(serializer.data)
 
     def put(self, request, format=None):
         data_product_uri = request.query_params['product-uri']
-        data_product = request.airavata_client.getDataProduct(
-            request.authz_token, data_product_uri)
+        data_product = request.airavata_client.research.get_data_product(
+            data_product_uri)
         if request.data and "fileContentText" in request.data:
             user_storage.update_data_product_content(
                 request=request,
@@ -898,8 +889,8 @@ def delete_file(request):
     data_product_uri = request.GET.get('data-product-uri', '')
     data_product = None
     try:
-        data_product = request.airavata_client.getDataProduct(
-            request.authz_token, data_product_uri)
+        data_product = request.airavata_client.research.get_data_product(
+            data_product_uri)
     except Exception as e:
         log.warning("Failed to load DataProduct for {}"
                     .format(data_product_uri), exc_info=True)
@@ -920,14 +911,12 @@ class UserProfileViewSet(mixins.RetrieveModelMixin,
     serializer_class = serializers.UserProfileSerializer
 
     def get_list(self):
-        user_profile_client = self.request.profile_service['user_profile']
-        return user_profile_client.getAllUserProfilesInGateway(
-            self.authz_token, self.gateway_id, 0, -1)
+        return 
self.request.airavata_client.iam.get_all_user_profiles_in_gateway(
+            self.gateway_id, 0, -1)
 
     def get_instance(self, lookup_value):
-        user_profile_client = self.request.profile_service['user_profile']
-        return user_profile_client.getUserProfileById(
-            self.authz_token, self.request.user.username, self.gateway_id)
+        return self.request.airavata_client.iam.get_user_profile_by_id(
+            self.request.user.username, self.gateway_id)
 
 
 class GroupResourceProfileViewSet(APIBackedViewSet):
@@ -935,22 +924,22 @@ class GroupResourceProfileViewSet(APIBackedViewSet):
     lookup_field = 'group_resource_profile_id'
 
     def get_list(self):
-        return self.request.airavata_client.getGroupResourceList(
-            self.authz_token, self.gateway_id)
+        return self.request.airavata_client.compute.get_group_resource_list(
+            self.gateway_id)
 
     def get_instance(self, lookup_value):
-        return self.request.airavata_client.getGroupResourceProfile(
-            self.authz_token, lookup_value)
+        return self.request.airavata_client.compute.get_group_resource_profile(
+            lookup_value)
 
     def perform_create(self, serializer):
         group_resource_profile = serializer.save()
         group_resource_profile.gatewayId = self.gateway_id
-        group_resource_profile_id = 
self.request.airavata_client.createGroupResourceProfile(
-            authzToken=self.authz_token, 
groupResourceProfile=group_resource_profile)
+        group_resource_profile_id = 
self.request.airavata_client.compute.create_group_resource_profile(
+            group_resource_profile=group_resource_profile)
         group_resource_profile.groupResourceProfileId = 
group_resource_profile_id
         # Update the creationTime field on the group resource profile
-        new_group_resource_profile = 
self.request.airavata_client.getGroupResourceProfile(
-            self.authz_token, group_resource_profile_id)
+        new_group_resource_profile = 
self.request.airavata_client.compute.get_group_resource_profile(
+            group_resource_profile_id)
         group_resource_profile.creationTime = 
new_group_resource_profile.creationTime
 
     def perform_update(self, serializer):
@@ -959,19 +948,16 @@ class GroupResourceProfileViewSet(APIBackedViewSet):
         grp = serializer.save()
         for removed_compute_resource_preference \
                 in grp._removed_compute_resource_preferences:
-            self.request.airavata_client.removeGroupComputePrefs(
-                self.authz_token,
+            self.request.airavata_client.compute.remove_group_compute_prefs(
                 removed_compute_resource_preference.computeResourceId,
                 removed_compute_resource_preference.groupResourceProfileId)
         for removed_compute_resource_policy \
                 in grp._removed_compute_resource_policies:
-            self.request.airavata_client.removeGroupComputeResourcePolicy(
-                self.authz_token,
+            
self.request.airavata_client.compute.remove_group_compute_resource_policy(
                 removed_compute_resource_policy.resourcePolicyId)
         for removed_batch_queue_resource_policy \
                 in grp._removed_batch_queue_resource_policies:
-            self.request.airavata_client.removeGroupBatchQueueResourcePolicy(
-                self.authz_token,
+            
self.request.airavata_client.compute.remove_group_batch_queue_resource_policy(
                 removed_batch_queue_resource_policy.resourcePolicyId)
         if hasattr(grp, 'computePreferences') and grp.computePreferences:
             from collections import OrderedDict
@@ -1123,12 +1109,11 @@ class GroupResourceProfileViewSet(APIBackedViewSet):
                                         from 
airavata.model.appcatalog.groupresourceprofile.ttypes import 
GroupAccountSSHProvisionerConfig
                                         
pref.specificPreferences.slurm.groupSSHAccountProvisionerConfigs[cfg_idx] = 
GroupAccountSSHProvisionerConfig(**cfg)
 
-        self.request.airavata_client.updateGroupResourceProfile(
-            self.authz_token, grp)
+        self.request.airavata_client.compute.update_group_resource_profile(grp)
 
     def perform_destroy(self, instance):
-        self.request.airavata_client.removeGroupResourceProfile(
-            self.authz_token, instance.groupResourceProfileId)
+        self.request.airavata_client.compute.remove_group_resource_profile(
+            instance.groupResourceProfileId)
 
 
 class SharedEntityViewSet(mixins.RetrieveModelMixin,
@@ -1179,35 +1164,32 @@ class SharedEntityViewSet(mixins.RetrieveModelMixin,
                 'owner': self._load_user_profile(owner_id)}
 
     def _load_accessible_users(self, entity_id, permission_type):
-        users = self.request.airavata_client.getAllAccessibleUsers(
-            self.authz_token, entity_id, permission_type)
+        users = self.request.airavata_client.sharing.get_all_accessible_users(
+            entity_id, permission_type)
         return {user_id: permission_type for user_id in users}
 
     def _load_directly_accessible_users(self, entity_id, permission_type):
-        users = self.request.airavata_client.getAllDirectlyAccessibleUsers(
-            self.authz_token, entity_id, permission_type)
+        users = 
self.request.airavata_client.sharing.get_all_directly_accessible_users(
+            entity_id, permission_type)
         return {user_id: permission_type for user_id in users}
 
     def _load_user_profile(self, user_id):
-        user_profile_client = self.request.profile_service['user_profile']
         username = user_id[0:user_id.rindex('@')]
-        return user_profile_client.getUserProfileById(self.authz_token,
-                                                      username,
-                                                      settings.GATEWAY_ID)
+        return self.request.airavata_client.iam.get_user_profile_by_id(
+            username, settings.GATEWAY_ID)
 
     def _load_accessible_groups(self, entity_id, permission_type):
-        groups = self.request.airavata_client.getAllAccessibleGroups(
-            self.authz_token, entity_id, permission_type)
+        groups = 
self.request.airavata_client.sharing.get_all_accessible_groups(
+            entity_id, permission_type)
         return {group_id: permission_type for group_id in groups}
 
     def _load_directly_accessible_groups(self, entity_id, permission_type):
-        groups = self.request.airavata_client.getAllDirectlyAccessibleGroups(
-            self.authz_token, entity_id, permission_type)
+        groups = 
self.request.airavata_client.sharing.get_all_directly_accessible_groups(
+            entity_id, permission_type)
         return {group_id: permission_type for group_id in groups}
 
     def _load_group(self, group_id):
-        group_manager_client = self.request.profile_service['group_manager']
-        return group_manager_client.getGroup(self.authz_token, group_id)
+        return self.request.airavata_client.sharing.get_group(group_id)
 
     def perform_update(self, serializer):
         shared_entity = serializer.save()
@@ -1262,23 +1244,23 @@ class SharedEntityViewSet(mixins.RetrieveModelMixin,
                 shared_entity['_group_revoke_manage_sharing_permission'])
 
     def _share_with_users(self, entity_id, permission_type, user_ids):
-        self.request.airavata_client.shareResourceWithUsers(
-            self.authz_token, entity_id,
+        self.request.airavata_client.sharing.share_resource_with_users(
+            entity_id,
             {user_id: permission_type for user_id in user_ids})
 
     def _revoke_from_users(self, entity_id, permission_type, user_ids):
-        self.request.airavata_client.revokeSharingOfResourceFromUsers(
-            self.authz_token, entity_id,
+        
self.request.airavata_client.sharing.revoke_sharing_of_resource_from_users(
+            entity_id,
             {user_id: permission_type for user_id in user_ids})
 
     def _share_with_groups(self, entity_id, permission_type, group_ids):
-        self.request.airavata_client.shareResourceWithGroups(
-            self.authz_token, entity_id,
+        self.request.airavata_client.sharing.share_resource_with_groups(
+            entity_id,
             {group_id: permission_type for group_id in group_ids})
 
     def _revoke_from_groups(self, entity_id, permission_type, group_ids):
-        self.request.airavata_client.revokeSharingOfResourceFromGroups(
-            self.authz_token, entity_id,
+        
self.request.airavata_client.sharing.revoke_sharing_of_resource_from_groups(
+            entity_id,
             {group_id: permission_type for group_id in group_ids})
 
     @action(methods=['put'], detail=True)
@@ -1353,29 +1335,27 @@ class CredentialSummaryViewSet(APIBackedViewSet):
     serializer_class = serializers.CredentialSummarySerializer
 
     def get_list(self):
-        ssh_creds = self.request.airavata_client.getAllCredentialSummaries(
-            self.authz_token, SummaryType.SSH)
-        pwd_creds = self.request.airavata_client.getAllCredentialSummaries(
-            self.authz_token, SummaryType.PASSWD)
+        ssh_creds = 
self.request.airavata_client.credential.get_all_credential_summaries(
+            SummaryType.SSH)
+        pwd_creds = 
self.request.airavata_client.credential.get_all_credential_summaries(
+            SummaryType.PASSWD)
         return ssh_creds + pwd_creds
 
     def get_instance(self, lookup_value):
-        return self.request.airavata_client.getCredentialSummary(
-            self.authz_token, lookup_value)
+        return self.request.airavata_client.credential.get_credential_summary(
+            lookup_value)
 
     @action(detail=False)
     def ssh(self, request):
-        summaries = self.request.airavata_client.getAllCredentialSummaries(
-            self.authz_token, SummaryType.SSH
-        )
+        summaries = 
self.request.airavata_client.credential.get_all_credential_summaries(
+            SummaryType.SSH)
         serializer = self.get_serializer(summaries, many=True)
         return Response(serializer.data)
 
     @action(detail=False)
     def password(self, request):
-        summaries = self.request.airavata_client.getAllCredentialSummaries(
-            self.authz_token, SummaryType.PASSWD
-        )
+        summaries = 
self.request.airavata_client.credential.get_all_credential_summaries(
+            SummaryType.PASSWD)
         serializer = self.get_serializer(summaries, many=True)
         return Response(serializer.data)
 
@@ -1384,10 +1364,10 @@ class CredentialSummaryViewSet(APIBackedViewSet):
         if 'description' not in request.data:
             raise ParseError("'description' is required in request")
         description = request.data.get('description')
-        token_id = self.request.airavata_client.generateAndRegisterSSHKeys(
-            request.authz_token, description)
-        credential_summary = self.request.airavata_client.getCredentialSummary(
-            request.authz_token, token_id)
+        token_id = 
self.request.airavata_client.credential.generate_and_register_ssh_keys(
+            description)
+        credential_summary = 
self.request.airavata_client.credential.get_credential_summary(
+            token_id)
         serializer = self.get_serializer(credential_summary)
         return Response(serializer.data)
 
@@ -1401,28 +1381,28 @@ class CredentialSummaryViewSet(APIBackedViewSet):
         username = request.data.get('username')
         password = request.data.get('password')
         description = request.data.get('description')
-        token_id = self.request.airavata_client.registerPwdCredential(
-            request.authz_token, username, password, description)
-        credential_summary = self.request.airavata_client.getCredentialSummary(
-            request.authz_token, token_id)
+        token_id = 
self.request.airavata_client.credential.register_pwd_credential(
+            username, password, description)
+        credential_summary = 
self.request.airavata_client.credential.get_credential_summary(
+            token_id)
         serializer = self.get_serializer(credential_summary)
         return Response(serializer.data)
 
     def perform_destroy(self, instance):
         if instance.type == SummaryType.SSH:
-            self.request.airavata_client.deleteSSHPubKey(
-                self.authz_token, instance.token)
+            self.request.airavata_client.credential.delete_ssh_pub_key(
+                instance.token)
         elif instance.type == SummaryType.PASSWD:
-            self.request.airavata_client.deletePWDCredential(
-                self.authz_token, instance.token)
+            self.request.airavata_client.credential.delete_pwd_credential(
+                instance.token)
 
 
 class CurrentGatewayResourceProfile(APIView):
 
     def get(self, request, format=None):
         gateway_resource_profile = \
-            request.airavata_client.getGatewayResourceProfile(
-                request.authz_token, settings.GATEWAY_ID)
+            request.airavata_client.compute.get_gateway_resource_profile(
+                settings.GATEWAY_ID)
         serializer = serializers.GatewayResourceProfileSerializer(
             gateway_resource_profile, context={'request': request})
         return Response(serializer.data)
@@ -1432,8 +1412,7 @@ class CurrentGatewayResourceProfile(APIView):
             data=request.data, context={'request': request})
         if serializer.is_valid():
             gateway_resource_profile = serializer.save()
-            request.airavata_client.updateGatewayResourceProfile(
-                request.authz_token,
+            request.airavata_client.compute.update_gateway_resource_profile(
                 settings.GATEWAY_ID,
                 gateway_resource_profile)
             return Response(serializer.data, status=status.HTTP_201_CREATED)
@@ -1444,8 +1423,8 @@ class CurrentGatewayResourceProfile(APIView):
 class ExperimentArchiveView(APIView):
 
     def get(self, request, experiment_id=None, format=None):
-        experiment: ExperimentModel = request.airavata_client.getExperiment(
-            request.authz_token, experiment_id)
+        experiment: ExperimentModel = 
request.airavata_client.research.get_experiment(
+            experiment_id)
         result = dict(archived=False, archive_name=None, created_date=None,
                       max_age=settings.GATEWAY_USER_DATA_ARCHIVE_MAX_AGE_DAYS)
         try:
@@ -1466,15 +1445,14 @@ class StorageResourceViewSet(mixins.RetrieveModelMixin,
     lookup_field = 'storage_resource_id'
 
     def get_instance(self, lookup_value, format=None):
-        return self.request.airavata_client.getStorageResource(
-            self.authz_token, lookup_value)
+        return self.request.airavata_client.storage.get_storage_resource(
+            lookup_value)
 
     @action(detail=False)
     def all_names(self, request, format=None):
         """Return a map of compute resource names keyed by resource id."""
         return Response(
-            request.airavata_client.getAllStorageResourceNames(
-                request.authz_token))
+            request.airavata_client.storage.get_all_storage_resource_names())
 
 
 class StoragePreferenceViewSet(APIBackedViewSet):
@@ -1482,32 +1460,30 @@ class StoragePreferenceViewSet(APIBackedViewSet):
     lookup_field = 'storage_resource_id'
 
     def get_list(self):
-        return self.request.airavata_client.getAllGatewayStoragePreferences(
-            self.authz_token, settings.GATEWAY_ID)
+        return 
self.request.airavata_client.compute.get_all_gateway_storage_preferences(
+            settings.GATEWAY_ID)
 
     def get_instance(self, lookup_value):
-        return self.request.airavata_client.getGatewayStoragePreference(
-            self.authz_token, settings.GATEWAY_ID, lookup_value)
+        return 
self.request.airavata_client.compute.get_gateway_storage_preference(
+            settings.GATEWAY_ID, lookup_value)
 
     def perform_create(self, serializer):
         storage_preference = serializer.save()
-        self.request.airavata_client.addGatewayStoragePreference(
-            self.authz_token,
+        self.request.airavata_client.compute.add_gateway_storage_preference(
             settings.GATEWAY_ID,
             storage_preference.storageResourceId,
             storage_preference)
 
     def perform_update(self, serializer):
         storage_preference = serializer.save()
-        self.request.airavata_client.updateGatewayStoragePreference(
-            self.authz_token,
+        self.request.airavata_client.compute.update_gateway_storage_preference(
             settings.GATEWAY_ID,
             storage_preference.storageResourceId,
             storage_preference)
 
     def perform_destroy(self, instance):
-        self.request.airavata_client.deleteGatewayStoragePreference(
-            self.authz_token, settings.GATEWAY_ID, instance.storageResourceId)
+        self.request.airavata_client.compute.delete_gateway_storage_preference(
+            settings.GATEWAY_ID, instance.storageResourceId)
 
 
 class ParserViewSet(mixins.CreateModelMixin,
@@ -1519,20 +1495,20 @@ class ParserViewSet(mixins.CreateModelMixin,
     lookup_field = 'parser_id'
 
     def get_list(self):
-        return self.request.airavata_client.listAllParsers(
-            self.authz_token, settings.GATEWAY_ID)
+        return self.request.airavata_client.research.list_all_parsers(
+            settings.GATEWAY_ID)
 
     def get_instance(self, lookup_value):
-        return self.request.airavata_client.getParser(
-            self.authz_token, lookup_value, settings.GATEWAY_ID)
+        return self.request.airavata_client.research.get_parser(
+            lookup_value, settings.GATEWAY_ID)
 
     def perform_create(self, serializer):
         parser = serializer.save()
-        self.request.airavata_client.saveParser(self.authz_token, parser)
+        self.request.airavata_client.research.save_parser(parser)
 
     def perform_update(self, serializer):
         parser = serializer.save()
-        self.request.airavata_client.saveParser(self.authz_token, parser)
+        self.request.airavata_client.research.save_parser(parser)
 
 
 class UserStoragePathView(APIView):
@@ -1694,29 +1670,28 @@ class ManageNotificationViewSet(APIBackedViewSet):
     lookup_field = 'notification_id'
 
     def get_instance(self, lookup_value):
-        return self.request.airavata_client.getNotification(
-            self.authz_token, settings.GATEWAY_ID, lookup_value)
+        return self.request.airavata_client.research.get_notification(
+            settings.GATEWAY_ID, lookup_value)
 
     def get_list(self):
-        return self.request.airavata_client.getAllNotifications(
-            self.authz_token, self.gateway_id)
+        return self.request.airavata_client.research.get_all_notifications(
+            self.gateway_id)
 
     def perform_destroy(self, instance):
-        self.request.airavata_client.deleteNotification(
-            self.authz_token, settings.GATEWAY_ID, instance.notificationId)
+        self.request.airavata_client.research.delete_notification(
+            settings.GATEWAY_ID, instance.notificationId)
 
     def perform_create(self, serializer):
         notification = serializer.save(gatewayId=self.gateway_id)
-        notificationId = self.request.airavata_client.createNotification(
-            self.authz_token, notification)
+        notificationId = 
self.request.airavata_client.research.create_notification(
+            notification)
         notification.notificationId = notificationId
 
         serializer.update_notification_extension(self.request, notification)
 
     def perform_update(self, serializer):
         notification = serializer.save()
-        self.request.airavata_client.updateNotification(
-            self.authz_token, notification)
+        self.request.airavata_client.research.update_notification(notification)
 
         serializer.update_notification_extension(self.request, notification)
 
@@ -1766,18 +1741,16 @@ class IAMUserViewSet(mixins.RetrieveModelMixin,
 
     def perform_update(self, serializer):
         managed_user_profile = serializer.save()
-        group_manager_client = self.request.profile_service['group_manager']
-        user_profile_client = self.request.profile_service['user_profile']
+        sharing_client = self.request.airavata_client.sharing
+        iam_client = self.request.airavata_client.iam
         user_id = managed_user_profile['airavataInternalUserId']
         added_groups = []
         for group_id in managed_user_profile['_added_group_ids']:
-            group = group_manager_client.getGroup(self.authz_token, group_id)
-            group_manager_client.addUsersToGroup(
-                self.authz_token, [user_id], group_id)
+            group = sharing_client.get_group(group_id)
+            sharing_client.add_users_to_group([user_id], group_id)
             added_groups.append(group)
         if len(added_groups) > 0:
-            user_profile = user_profile_client.getUserProfileById(
-                self.authz_token,
+            user_profile = iam_client.get_user_profile_by_id(
                 managed_user_profile['userId'],
                 settings.GATEWAY_ID)
             signals.user_added_to_group.send(

Reply via email to