Merge "Fixing Network Models"
[pharos-tools.git] / dashboard / src / api / views.py
index 072354f..2ae1ac5 100644 (file)
@@ -18,14 +18,12 @@ 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.old_serializers import NotifierSerializer, UserSerializer
+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 notifier.models import Notifier
-from api.models import *
+from api.models import LabManagerTracker, get_task
+from notifier.manager import NotificationHandler
 
 
 class BookingViewSet(viewsets.ModelViewSet):
@@ -34,11 +32,6 @@ class BookingViewSet(viewsets.ModelViewSet):
     filter_fields = ('resource', 'id')
 
 
-class NotifierViewSet(viewsets.ModelViewSet):
-    queryset = Notifier.objects.none()
-    serializer_class = NotifierSerializer
-
-
 class UserViewSet(viewsets.ModelViewSet):
     queryset = UserProfile.objects.all()
     serializer_class = UserSerializer
@@ -61,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)
@@ -69,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)
@@ -86,7 +101,10 @@ 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 = {}
         d['task'] = task.config.get_delta()
         m = {}
@@ -99,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)