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)

Reply via email to