Implement OPNFV workflow
[pharos-tools.git] / dashboard / src / api / views.py
index cc3a668..2ae1ac5 100644 (file)
@@ -18,13 +18,11 @@ from rest_framework import viewsets
 from rest_framework.authtoken.models import Token
 from django.views.decorators.csrf import csrf_exempt
 
-import json
-
-from api.serializers.booking_serializer import *
+from api.serializers.booking_serializer import BookingSerializer
 from api.serializers.old_serializers import UserSerializer
 from account.models import UserProfile
 from booking.models import Booking
-from api.models import *
+from api.models import LabManagerTracker, get_task
 from notifier.manager import NotificationHandler
 
 
@@ -56,6 +54,16 @@ def lab_inventory(request, lab_name=""):
     return JsonResponse(lab_manager.get_inventory(), safe=False)
 
 
+@csrf_exempt
+def lab_host(request, lab_name="", host_id=""):
+    lab_token = request.META.get('HTTP_AUTH_TOKEN')
+    lab_manager = LabManagerTracker.get(lab_name, lab_token)
+    if request.method == "GET":
+        return JsonResponse(lab_manager.get_host(host_id), safe=False)
+    if request.method == "POST":
+        return JsonResponse(lab_manager.update_host(host_id, request.POST), safe=False)
+
+
 def lab_status(request, lab_name=""):
     lab_token = request.META.get('HTTP_AUTH_TOKEN')
     lab_manager = LabManagerTracker.get(lab_name, lab_token)
@@ -64,6 +72,18 @@ def lab_status(request, lab_name=""):
     return JsonResponse(lab_manager.get_status(), safe=False)
 
 
+@csrf_exempt
+def update_host_bmc(request, lab_name="", host_id=""):
+    lab_token = request.META.get('HTTP_AUTH_TOKEN')
+    lab_manager = LabManagerTracker.get(lab_name, lab_token)
+    if request.method == "POST":
+        # update / create RemoteInfo for host
+        return JsonResponse(
+            lab_manager.update_host_remote_info(request.POST, host_id),
+            safe=False
+        )
+
+
 def lab_profile(request, lab_name=""):
     lab_token = request.META.get('HTTP_AUTH_TOKEN')
     lab_manager = LabManagerTracker.get(lab_name, lab_token)
@@ -81,6 +101,8 @@ def specific_task(request, lab_name="", job_id="", task_id=""):
             task.status = request.POST.get('status')
         if 'message' in request.POST:
             task.message = request.POST.get('message')
+        if 'lab_token' in request.POST:
+            task.lab_token = request.POST.get('lab_token')
         task.save()
         NotificationHandler.task_updated(task)
         d = {}
@@ -95,6 +117,7 @@ def specific_task(request, lab_name="", job_id="", task_id=""):
         return JsonResponse(get_task(task_id).config.get_delta())
 
 
+@csrf_exempt
 def specific_job(request, lab_name="", job_id=""):
     lab_token = request.META.get('HTTP_AUTH_TOKEN')
     lab_manager = LabManagerTracker.get(lab_name, lab_token)