This is an automated email from the ASF dual-hosted git repository. machristie pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/airavata-django-portal.git
commit c41f65494a091929700384fe523e1f81eba40e64 Author: Marcus Christie <[email protected]> AuthorDate: Tue Aug 23 17:26:17 2022 -0400 AIRAVATA-3649 REST API to list and invoke queue settings calculators --- django_airavata/apps/api/serializers.py | 5 +++++ django_airavata/apps/api/urls.py | 2 ++ django_airavata/apps/api/views.py | 29 ++++++++++++++++++++++++++++- 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/django_airavata/apps/api/serializers.py b/django_airavata/apps/api/serializers.py index 84d32b5b..6780b3c3 100644 --- a/django_airavata/apps/api/serializers.py +++ b/django_airavata/apps/api/serializers.py @@ -1162,3 +1162,8 @@ class SettingsSerializer(serializers.Serializer): fileUploadMaxFileSize = serializers.IntegerField() tusEndpoint = serializers.CharField() pgaUrl = serializers.CharField() + + +class QueueSettingsCalculatorSerializer(serializers.Serializer): + id = serializers.CharField() + name = serializers.CharField() diff --git a/django_airavata/apps/api/urls.py b/django_airavata/apps/api/urls.py index 61b27177..f655d648 100644 --- a/django_airavata/apps/api/urls.py +++ b/django_airavata/apps/api/urls.py @@ -45,6 +45,8 @@ router.register(r'iam-user-profiles', views.IAMUserViewSet, basename='iam-user-profile') router.register(r'unverified-email-users', views.UnverifiedEmailUserViewSet, basename='unverified-email-user-profile') +router.register(r'queue-settings-calculators', views.QueueSettingsCalculatorViewSet, + basename='queue-settings-calculator') app_name = 'django_airavata_api' urlpatterns = [ diff --git a/django_airavata/apps/api/views.py b/django_airavata/apps/api/views.py index 79816b3c..f1d8d6e0 100644 --- a/django_airavata/apps/api/views.py +++ b/django_airavata/apps/api/views.py @@ -23,7 +23,11 @@ from airavata.model.data.movement.ttypes import ( from airavata.model.experiment.ttypes import ExperimentSearchFields from airavata.model.group.ttypes import ResourcePermissionType from airavata.model.user.ttypes import Status -from airavata_django_portal_sdk import experiment_util, user_storage +from airavata_django_portal_sdk import ( + experiment_util, + queue_settings, + user_storage +) from django.conf import settings from django.contrib.auth import get_user_model from django.core.exceptions import ObjectDoesNotExist, PermissionDenied @@ -1862,3 +1866,26 @@ def _generate_output_view_data(request): experiment_id, test_mode=test_mode, **params.dict()) + + +class QueueSettingsCalculatorViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, GenericAPIBackedViewSet): + serializer_class = serializers.QueueSettingsCalculatorSerializer + + def get_list(self): + return queue_settings.get_all() + + def get_instance(self, lookup_value): + calcs = queue_settings.get_all() + calc = [calc for calc in calcs if calc.id == lookup_value] + if len(calc) == 0: + return None + return calc[0] + + @action(methods=['post'], detail=True, serializer_class=serializers.ExperimentSerializer) + def calculate(self, request, pk=None): + + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) + experiment_model = serializer.save() + result = queue_settings.calculate_queue_settings(pk, request, experiment_model) + return Response(result)
