From 0f779323898999cc6269ee2f9183de75e1eedab0 Mon Sep 17 00:00:00 2001 From: maxbr Date: Thu, 5 Jan 2017 12:34:37 +0100 Subject: Add library for dashboard API JIRA: PHAROS-265 The DashboardAPI class can be used to query and update dashboard data. Change-Id: I584a3cc500ff1d67011c18af4e73e504126310a2 Signed-off-by: maxbr --- pharos-dashboard/src/api/migrations/__init__.py | 10 ++++++++++ pharos-dashboard/src/api/serializers.py | 20 ++++++++++++++------ pharos-dashboard/src/api/urls.py | 1 + pharos-dashboard/src/api/views.py | 12 ++++++++---- 4 files changed, 33 insertions(+), 10 deletions(-) create mode 100644 pharos-dashboard/src/api/migrations/__init__.py (limited to 'pharos-dashboard/src/api') diff --git a/pharos-dashboard/src/api/migrations/__init__.py b/pharos-dashboard/src/api/migrations/__init__.py new file mode 100644 index 0000000..b5914ce --- /dev/null +++ b/pharos-dashboard/src/api/migrations/__init__.py @@ -0,0 +1,10 @@ +############################################################################## +# Copyright (c) 2016 Max Breitenfeldt and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + + diff --git a/pharos-dashboard/src/api/serializers.py b/pharos-dashboard/src/api/serializers.py index 78e6020..f8f02a2 100644 --- a/pharos-dashboard/src/api/serializers.py +++ b/pharos-dashboard/src/api/serializers.py @@ -11,22 +11,30 @@ from rest_framework import serializers from booking.models import Booking -from dashboard.models import Server, Resource +from dashboard.models import Server, Resource, ResourceStatus -class BookingSerializer(serializers.HyperlinkedModelSerializer): +class BookingSerializer(serializers.ModelSerializer): + installer_name = serializers.RelatedField(source='installer', read_only=True) + scenario_name = serializers.RelatedField(source='scenario', read_only=True) + class Meta: model = Booking - fields = ('id', 'resource', 'start', 'end', 'purpose') + fields = ('id', 'resource_id', 'start', 'end', 'installer_name', 'scenario_name', 'purpose') -class ServerSerializer(serializers.HyperlinkedModelSerializer): +class ServerSerializer(serializers.ModelSerializer): class Meta: model = Server - fields = ('id', 'resource', 'name', 'model', 'cpu', 'ram', 'storage') + fields = ('id', 'resource_id', 'name', 'model', 'cpu', 'ram', 'storage') -class ResourceSerializer(serializers.HyperlinkedModelSerializer): +class ResourceSerializer(serializers.ModelSerializer): class Meta: model = Resource fields = ('id', 'name', 'description', 'url', 'server_set') + +class ResourceStatusSerializer(serializers.ModelSerializer): + class Meta: + model = ResourceStatus + fields = ('id', 'resource', 'timestamp','type', 'title', 'content') \ No newline at end of file diff --git a/pharos-dashboard/src/api/urls.py b/pharos-dashboard/src/api/urls.py index dfbe1ac..a4a4b2f 100644 --- a/pharos-dashboard/src/api/urls.py +++ b/pharos-dashboard/src/api/urls.py @@ -32,6 +32,7 @@ router = routers.DefaultRouter() router.register(r'resources', ResourceViewSet) router.register(r'servers', ServerViewSet) router.register(r'bookings', BookingViewSet) +router.register(r'resource_status', ResourceStatusViewSet) urlpatterns = [ url(r'^', include(router.urls)), diff --git a/pharos-dashboard/src/api/views.py b/pharos-dashboard/src/api/views.py index 2595e5e..84fa1b5 100644 --- a/pharos-dashboard/src/api/views.py +++ b/pharos-dashboard/src/api/views.py @@ -15,15 +15,15 @@ from django.views import View from rest_framework import viewsets from rest_framework.authtoken.models import Token -from api.serializers import ResourceSerializer, ServerSerializer, BookingSerializer +from api.serializers import * from booking.models import Booking -from dashboard.models import Resource, Server +from dashboard.models import Resource, Server, ResourceStatus class BookingViewSet(viewsets.ModelViewSet): queryset = Booking.objects.all() serializer_class = BookingSerializer - filter_fields = ('resource', 'user') + filter_fields = ('resource', 'id') class ServerViewSet(viewsets.ModelViewSet): @@ -35,7 +35,11 @@ class ServerViewSet(viewsets.ModelViewSet): class ResourceViewSet(viewsets.ModelViewSet): queryset = Resource.objects.all() serializer_class = ResourceSerializer - filter_fields = ('name',) + filter_fields = ('name', 'id') + +class ResourceStatusViewSet(viewsets.ModelViewSet): + queryset = ResourceStatus.objects.all() + serializer_class = ResourceStatusSerializer @method_decorator(login_required, name='dispatch') -- cgit 1.2.3-korg