Update license
[multicloud/framework.git] / multivimbroker / multivimbroker / forwarder / views.py
1 # Copyright 2017 Wind River Systems, Inc.
2 # Copyright (c) 2017-2018 VMware, Inc.
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 #         http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15
16 import os
17 import json
18
19 from rest_framework.views import APIView
20 from rest_framework.views import Response
21 from rest_framework.views import status
22 from multivimbroker.forwarder.base import BaseHandler
23
24 #
25
26
27 class BaseServer(BaseHandler, APIView):
28
29     def get(self, request, vimid):
30         raise NotImplementedError()
31
32     def post(self, request, vimid):
33         raise NotImplementedError()
34
35     def put(self, request, vimid):
36         raise NotImplementedError()
37
38     def delete(self, request, vimid):
39         raise NotImplementedError()
40
41     def head(self, request, vimid):
42         raise NotImplementedError()
43
44     def patch(self, request, vimid):
45         raise NotImplementedError()
46
47
48 # proxy handler
49 class Identity(BaseServer):
50
51     def get(self, request, vimid):
52
53         return self.send(vimid, request.get_full_path(), request.body, "GET")
54
55     def post(self, request, vimid):
56
57         return self.send(vimid, request.get_full_path(), request.body, "POST")
58
59
60 class Registry(BaseServer):
61
62     def post(self, request, vimid):
63
64         return self.send(vimid, request.get_full_path(), request.body, "POST")
65
66
67 class UnRegistry(BaseServer):
68
69     def delete(self, request, vimid):
70
71         return self.send(vimid, request.get_full_path(), request.body,
72                          "DELETE")
73
74
75 class Extension(BaseServer):
76
77     def get(self, request, vimid):
78
79         return self.send(vimid, request.get_full_path(), request.body, "GET")
80
81
82 class VIMTypes(BaseServer):
83
84     def get(self, request):
85         # Fix here unless we have plugin registry
86         json_file = os.path.join(os.path.dirname(__file__),
87                                  '../pub/config/provider-plugin.json')
88         with open(json_file, "r") as f:
89             plugins = json.load(f)
90         data = {"vim_types": plugins}
91         return Response(data=data, status=status.HTTP_200_OK)
92
93
94 # forward  handler
95 class Forward(BaseServer):
96
97     def get(self, request, vimid):
98
99         return self.send(vimid, request.get_full_path(), request.body, "GET")
100
101     def post(self, request, vimid):
102
103         return self.send(vimid, request.get_full_path(), request.body, "POST",
104                          headers=None)
105
106     def patch(self, request, vimid):
107
108         return self.send(vimid, request.get_full_path(), request.body, "PATCH",
109                          headers=None)
110
111     def delete(self, request, vimid):
112
113         return self.send(vimid, request.get_full_path(), request.body,
114                          "DELETE", headers=None)
115
116     def head(self, request, vimid):
117
118         return self.send(vimid, request.get_full_path(), request.body, "HEAD")
119
120     def put(self, request, vimid):
121
122         return self.send(vimid, request.get_full_path(), request.body, "PUT",
123                          headers=None)