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.
15 from rest_framework.views import APIView
16 from rest_framework.views import Response
17 from rest_framework.views import status
18 from multivimbroker.forwarder.base import BaseHandler
23 class BaseServer(BaseHandler, APIView):
25 def get(self, request, vimid):
26 raise NotImplementedError()
28 def post(self, request, vimid):
29 raise NotImplementedError()
31 def put(self, request, vimid):
32 raise NotImplementedError()
34 def delete(self, request, vimid):
35 raise NotImplementedError()
37 def head(self, request, vimid):
38 raise NotImplementedError()
40 def patch(self, request, vimid):
41 raise NotImplementedError()
45 class Identity(BaseServer):
47 def get(self, request, vimid):
49 return self.send(vimid, request.get_full_path(), request.body, "GET")
51 def post(self, request, vimid):
53 return self.send(vimid, request.get_full_path(), request.body, "POST")
56 class Registry(BaseServer):
58 def post(self, request, vimid):
60 return self.send(vimid, request.get_full_path(), request.body, "POST")
63 class UnRegistry(BaseServer):
65 def delete(self, request, vimid):
67 return self.send(vimid, request.get_full_path(), request.body,
71 class Extension(BaseServer):
73 def get(self, request, vimid):
75 return self.send(vimid, request.get_full_path(), request.body, "GET")
78 class VIMTypes(BaseServer):
80 def get(self, request):
81 # Fix here unless we have plugin registry
85 "vim_type": "openstack",
88 "version": "titanium_cloud",
102 "extra_info_hint": ""
109 return Response(data=data, status=status.HTTP_200_OK)
113 class Forward(BaseServer):
115 def get(self, request, vimid):
117 return self.send(vimid, request.get_full_path(), request.body, "GET")
119 def post(self, request, vimid):
121 return self.send(vimid, request.get_full_path(), request.body, "POST",
124 def patch(self, request, vimid):
126 return self.send(vimid, request.get_full_path(), request.body, "PATCH",
129 def delete(self, request, vimid):
131 return self.send(vimid, request.get_full_path(), request.body,
132 "DELETE", headers=None)
134 def head(self, request, vimid):
136 return self.send(vimid, request.get_full_path(), request.body, "HEAD")
138 def put(self, request, vimid):
140 return self.send(vimid, request.get_full_path(), request.body, "PUT",