Fix namespace of plugins
[multicloud/framework.git] / multivimbroker / multivimbroker / forwarder / views.py
1 # Copyright 2017 Wind River Systems, Inc.
2 #
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
6 #
7 #         http://www.apache.org/licenses/LICENSE-2.0
8 #
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.
14
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
19
20 #
21
22
23 class BaseServer(BaseHandler, APIView):
24
25     def get(self, request, vimid):
26         raise NotImplementedError()
27
28     def post(self, request, vimid):
29         raise NotImplementedError()
30
31     def put(self, request, vimid):
32         raise NotImplementedError()
33
34     def delete(self, request, vimid):
35         raise NotImplementedError()
36
37     def head(self, request, vimid):
38         raise NotImplementedError()
39
40     def patch(self, request, vimid):
41         raise NotImplementedError()
42
43
44 # proxy handler
45 class Identity(BaseServer):
46
47     def get(self, request, vimid):
48
49         return self.send(vimid, request.get_full_path(), request.body, "GET")
50
51     def post(self, request, vimid):
52
53         return self.send(vimid, request.get_full_path(), request.body, "POST")
54
55
56 class Registry(BaseServer):
57
58     def post(self, request, vimid):
59
60         return self.send(vimid, request.get_full_path(), request.body, "POST")
61
62
63 class UnRegistry(BaseServer):
64
65     def delete(self, request, vimid):
66
67         return self.send(vimid, request.get_full_path(), request.body,
68                          "DELETE")
69
70
71 class Extension(BaseServer):
72
73     def get(self, request, vimid):
74
75         return self.send(vimid, request.get_full_path(), request.body, "GET")
76
77
78 class VIMTypes(BaseServer):
79
80     def get(self, request):
81         # Fix here unless we have plugin registry
82         data = {
83             "vim_types": [
84                 {
85                     "vim_type": "openstack",
86                     "versions": [
87                         {
88                             "version": "titanium_cloud",
89                             "extra_info_hint": ""
90                         },
91                         {
92                             "version": "ocata",
93                             "extra_info_hint": ""
94                         }
95                     ]
96                 },
97                 {
98                     "vim_type": "vmware",
99                     "versions": [
100                         {
101                             "version": "4.0",
102                             "extra_info_hint": ""
103                         }
104                     ]
105                 }
106             ]
107         }
108
109         return Response(data=data, status=status.HTTP_200_OK)
110
111
112 # forward  handler
113 class Forward(BaseServer):
114
115     def get(self, request, vimid):
116
117         return self.send(vimid, request.get_full_path(), request.body, "GET")
118
119     def post(self, request, vimid):
120
121         return self.send(vimid, request.get_full_path(), request.body, "POST",
122                          headers=None)
123
124     def patch(self, request, vimid):
125
126         return self.send(vimid, request.get_full_path(), request.body, "PATCH",
127                          headers=None)
128
129     def delete(self, request, vimid):
130
131         return self.send(vimid, request.get_full_path(), request.body,
132                          "DELETE", headers=None)
133
134     def head(self, request, vimid):
135
136         return self.send(vimid, request.get_full_path(), request.body, "HEAD")
137
138     def put(self, request, vimid):
139
140         return self.send(vimid, request.get_full_path(), request.body, "PUT",
141                          headers=None)