1 # Copyright 2017 Wind River Systems, Inc.
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
18 from rest_framework.views import APIView
19 from rest_framework.views import Response
20 from rest_framework.views import status
21 from multivimbroker.forwarder.base import BaseHandler
26 class BaseServer(BaseHandler, APIView):
28 def get(self, request, vimid):
29 raise NotImplementedError()
31 def post(self, request, vimid):
32 raise NotImplementedError()
34 def put(self, request, vimid):
35 raise NotImplementedError()
37 def delete(self, request, vimid):
38 raise NotImplementedError()
40 def head(self, request, vimid):
41 raise NotImplementedError()
43 def patch(self, request, vimid):
44 raise NotImplementedError()
48 class Identity(BaseServer):
50 def get(self, request, vimid):
52 return self.send(vimid, request.get_full_path(), request.body, "GET")
54 def post(self, request, vimid):
56 return self.send(vimid, request.get_full_path(), request.body, "POST")
59 class Registry(BaseServer):
61 def post(self, request, vimid):
63 return self.send(vimid, request.get_full_path(), request.body, "POST")
66 class UnRegistry(BaseServer):
68 def delete(self, request, vimid):
70 return self.send(vimid, request.get_full_path(), request.body,
74 class Extension(BaseServer):
76 def get(self, request, vimid):
78 return self.send(vimid, request.get_full_path(), request.body, "GET")
81 class VIMTypes(BaseServer):
83 def get(self, request):
84 # Fix here unless we have plugin registry
85 json_file = os.path.join(os.path.dirname(__file__),
86 '../pub/config/provider-plugin.json')
87 with open(json_file, "r") as f:
88 plugins = json.load(f)
89 data = {"vim_types": plugins}
90 return Response(data=data, status=status.HTTP_200_OK)
94 class Forward(BaseServer):
96 def get(self, request, vimid):
98 return self.send(vimid, request.get_full_path(), request.body, "GET")
100 def post(self, request, vimid):
102 return self.send(vimid, request.get_full_path(), request.body, "POST",
105 def patch(self, request, vimid):
107 return self.send(vimid, request.get_full_path(), request.body, "PATCH",
110 def delete(self, request, vimid):
112 return self.send(vimid, request.get_full_path(), request.body,
113 "DELETE", headers=None)
115 def head(self, request, vimid):
117 return self.send(vimid, request.get_full_path(), request.body, "HEAD")
119 def put(self, request, vimid):
121 return self.send(vimid, request.get_full_path(), request.body, "PUT",