blob: c9dbf3a2392103d4d160599efa48579e90d9709e [file] [log] [blame]
Scott Baker012c54b2015-12-08 19:27:50 -08001from rest_framework.decorators import api_view
2from rest_framework.response import Response
3from rest_framework.reverse import reverse
4from rest_framework import serializers
5from rest_framework import generics
6from rest_framework import viewsets
7from rest_framework.decorators import detail_route, list_route
8from rest_framework.views import APIView
9from core.models import *
10from django.forms import widgets
11from django.conf.urls import patterns, url
12from plus import PlusSerializerMixin, XOSViewSet
13from django.shortcuts import get_object_or_404
14from xos.apibase import XOSListCreateAPIView, XOSRetrieveUpdateDestroyAPIView, XOSPermissionDenied
15from xos.exceptions import *
16import json
17import subprocess
18
19class VTNViewSet(XOSViewSet):
20 base_name = "vtn"
21 method_name = "rs/vtn"
22 method_kind = "viewset"
23
24 # these are just because ViewSet needs some queryset and model, even if we don't use the
25 # default endpoints
26 queryset = Service.objects.none() # CordSubscriber.get_tenant_objects().select_related().all()
27 model = Service
28
29 @classmethod
30 def get_urlpatterns(self):
31 patterns = []
32 patterns.append( self.list_url("services/$", {"get": "get_services"}, "services") )
Scott Baker1b7d98b2015-12-08 21:31:18 -080033 patterns.append( self.list_url("services_names/$", {"get": "get_services_names"}, "services") )
Scott Baker012c54b2015-12-08 19:27:50 -080034 patterns.append( self.list_url("services/(?P<service>[a-zA-Z0-9\-_]+)/$", {"get": "get_service"}, "get_service") )
35
36 return patterns
37
Scott Baker1b7d98b2015-12-08 21:31:18 -080038 def get_services_names(self, request, pk=None):
39 result = {}
40 for service in Service.objects.all():
Scott Bakercbf4c782015-12-09 22:54:52 -080041 for id in service.get_vtn_src_names():
Scott Baker1b7d98b2015-12-08 21:31:18 -080042 dependencies = service.get_vtn_dependencies_names()
43 if dependencies:
44 result[id] = dependencies
45 return Response(result)
46
Scott Baker012c54b2015-12-08 19:27:50 -080047 def get_services(self, request, pk=None):
48 result = {}
49 for service in Service.objects.all():
Scott Bakercbf4c782015-12-09 22:54:52 -080050 for id in service.get_vtn_src_ids():
Scott Baker1b7d98b2015-12-08 21:31:18 -080051 dependencies = service.get_vtn_dependencies_ids()
52 if dependencies:
53 result[id] = dependencies
Scott Baker012c54b2015-12-08 19:27:50 -080054 return Response(result)
55
56 def get_service(self, request, pk=None, service=None):
Scott Baker1b7d98b2015-12-08 21:31:18 -080057 for xos_service in Service.objects.all():
Scott Bakerc2275252015-12-10 15:48:37 -080058 if service in xos_service.get_vtn_src_ids():
Scott Baker1b7d98b2015-12-08 21:31:18 -080059 return Response(xos_service.get_vtn_dependencies_ids())
Scott Baker9406ee72016-04-26 14:45:20 -070060 return Response([])
61 # raise DoesNotExist()
Scott Baker012c54b2015-12-08 19:27:50 -080062
63 def list(self, request):
64 raise Exception("Not Implemented")
65