summaryrefslogtreecommitdiffstats
path: root/tools/pharos-dashboard/src
diff options
context:
space:
mode:
authormaxbr <maxbr@mi.fu-berlin.de>2017-01-05 12:34:37 +0100
committermaxbr <maxbr@mi.fu-berlin.de>2017-01-05 12:34:37 +0100
commit55c3b53ba08b2c6cf3c392b10a065a3076525951 (patch)
tree43ae585550a312c4c91bb002626cec5770556e98 /tools/pharos-dashboard/src
parent688948508e373829cdcd7bb1e4ebb7f55e43cdac (diff)
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 <maxbr@mi.fu-berlin.de>
Diffstat (limited to 'tools/pharos-dashboard/src')
-rw-r--r--tools/pharos-dashboard/src/api/migrations/__init__.py10
-rw-r--r--tools/pharos-dashboard/src/api/serializers.py20
-rw-r--r--tools/pharos-dashboard/src/api/urls.py1
-rw-r--r--tools/pharos-dashboard/src/api/views.py12
-rw-r--r--tools/pharos-dashboard/src/pharos_dashboard/settings.py11
5 files changed, 41 insertions, 13 deletions
diff --git a/tools/pharos-dashboard/src/api/migrations/__init__.py b/tools/pharos-dashboard/src/api/migrations/__init__.py
new file mode 100644
index 00000000..b5914ce7
--- /dev/null
+++ b/tools/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/tools/pharos-dashboard/src/api/serializers.py b/tools/pharos-dashboard/src/api/serializers.py
index 78e6020e..f8f02a2c 100644
--- a/tools/pharos-dashboard/src/api/serializers.py
+++ b/tools/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/tools/pharos-dashboard/src/api/urls.py b/tools/pharos-dashboard/src/api/urls.py
index dfbe1ac9..a4a4b2ff 100644
--- a/tools/pharos-dashboard/src/api/urls.py
+++ b/tools/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/tools/pharos-dashboard/src/api/views.py b/tools/pharos-dashboard/src/api/views.py
index 2595e5ef..84fa1b52 100644
--- a/tools/pharos-dashboard/src/api/views.py
+++ b/tools/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')
diff --git a/tools/pharos-dashboard/src/pharos_dashboard/settings.py b/tools/pharos-dashboard/src/pharos_dashboard/settings.py
index 2c4e8ccf..084f8786 100644
--- a/tools/pharos-dashboard/src/pharos_dashboard/settings.py
+++ b/tools/pharos-dashboard/src/pharos_dashboard/settings.py
@@ -5,7 +5,7 @@ from datetime import timedelta
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# SECURITY WARNING: don't run with debug turned on in production!
-DEBUG = os.environ['DEBUG']
+DEBUG = False
# Application definition
@@ -25,6 +25,7 @@ INSTALLED_APPS = [
'bootstrap3',
'crispy_forms',
'rest_framework',
+ 'rest_framework.authtoken',
]
MIDDLEWARE = [
@@ -131,7 +132,11 @@ REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
],
- 'DEFAULT_FILTER_BACKENDS': ('rest_framework.filters.DjangoFilterBackend',)
+ 'DEFAULT_FILTER_BACKENDS': ('rest_framework.filters.DjangoFilterBackend',),
+ 'DEFAULT_AUTHENTICATION_CLASSES': (
+ 'rest_framework.authentication.SessionAuthentication',
+ 'rest_framework.authentication.TokenAuthentication',
+ )
}
MEDIA_ROOT = '/media'
@@ -173,4 +178,4 @@ CELERYBEAT_SCHEDULE = {
'task': 'dashboard.tasks.database_cleanup',
'schedule': timedelta(hours=24)
},
-} \ No newline at end of file
+}