summaryrefslogtreecommitdiffstats
path: root/tools/pharos-dashboard/api
diff options
context:
space:
mode:
authorJack Morgan <jack.morgan@intel.com>2016-09-21 15:48:38 +0000
committerGerrit Code Review <gerrit@172.30.200.206>2016-09-21 15:48:38 +0000
commitdcc6fa43043c685b7443cbc27da12ad9bf2225c4 (patch)
tree7927874aa51afd638e69f46d773e1c0b09d40f6b /tools/pharos-dashboard/api
parent47f2f0a3224b8c990d5b9ab6c9628f9d7cf231b8 (diff)
parent3c8baae57206988fbdfc2d858ddc3f134e552f07 (diff)
Merge changes from topic 'pharos-dashboard'
* changes: Add a REST API for the dashboard Send notifications for booking start and end
Diffstat (limited to 'tools/pharos-dashboard/api')
-rw-r--r--tools/pharos-dashboard/api/__init__.py0
-rw-r--r--tools/pharos-dashboard/api/serializers.py22
-rw-r--r--tools/pharos-dashboard/api/urls.py28
-rw-r--r--tools/pharos-dashboard/api/views.py23
4 files changed, 73 insertions, 0 deletions
diff --git a/tools/pharos-dashboard/api/__init__.py b/tools/pharos-dashboard/api/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tools/pharos-dashboard/api/__init__.py
diff --git a/tools/pharos-dashboard/api/serializers.py b/tools/pharos-dashboard/api/serializers.py
new file mode 100644
index 00000000..c3875cca
--- /dev/null
+++ b/tools/pharos-dashboard/api/serializers.py
@@ -0,0 +1,22 @@
+from rest_framework import serializers
+
+from booking.models import Booking
+from dashboard.models import Server, Resource
+
+
+class BookingSerializer(serializers.HyperlinkedModelSerializer):
+ class Meta:
+ model = Booking
+ fields = ('id', 'resource', 'start', 'end', 'purpose')
+
+
+class ServerSerializer(serializers.HyperlinkedModelSerializer):
+ class Meta:
+ model = Server
+ fields = ('id', 'resource', 'name', 'model', 'cpu', 'ram', 'storage')
+
+
+class ResourceSerializer(serializers.HyperlinkedModelSerializer):
+ class Meta:
+ model = Resource
+ fields = ('id', 'name', 'description', 'url', 'server_set')
diff --git a/tools/pharos-dashboard/api/urls.py b/tools/pharos-dashboard/api/urls.py
new file mode 100644
index 00000000..22f12eb6
--- /dev/null
+++ b/tools/pharos-dashboard/api/urls.py
@@ -0,0 +1,28 @@
+"""pharos_dashboard URL Configuration
+
+The `urlpatterns` list routes URLs to views. For more information please see:
+ https://docs.djangoproject.com/en/1.10/topics/http/urls/
+Examples:
+Function views
+ 1. Add an import: from my_app import views
+ 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
+Class-based views
+ 1. Add an import: from other_app.views import Home
+ 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
+Including another URLconf
+ 1. Import the include() function: from django.conf.urls import url, include
+ 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
+"""
+from django.conf.urls import url, include
+from rest_framework import routers
+
+from api.views import *
+
+router = routers.DefaultRouter()
+router.register(r'resources', ResourceViewSet)
+router.register(r'servers', ServerViewSet)
+router.register(r'bookings', BookingViewSet)
+
+urlpatterns = [
+ url(r'^', include(router.urls)),
+] \ No newline at end of file
diff --git a/tools/pharos-dashboard/api/views.py b/tools/pharos-dashboard/api/views.py
new file mode 100644
index 00000000..78d7b8a9
--- /dev/null
+++ b/tools/pharos-dashboard/api/views.py
@@ -0,0 +1,23 @@
+from rest_framework import viewsets
+
+from api.serializers import ResourceSerializer, ServerSerializer, BookingSerializer
+from booking.models import Booking
+from dashboard.models import Resource, Server
+
+
+class BookingViewSet(viewsets.ModelViewSet):
+ queryset = Booking.objects.all()
+ serializer_class = BookingSerializer
+ filter_fields = ('resource', 'user')
+
+
+class ServerViewSet(viewsets.ModelViewSet):
+ queryset = Server.objects.all()
+ serializer_class = ServerSerializer
+ filter_fields = ('resource', 'name')
+
+
+class ResourceViewSet(viewsets.ModelViewSet):
+ queryset = Resource.objects.all()
+ serializer_class = ResourceSerializer
+ filter_fields = ('name',) \ No newline at end of file