Merge "Fix VFC swagger bug"
[vfc/nfvo/lcm.git] / lcm / packages / views.py
1 # Copyright 2016-2017 ZTE Corporation.
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 import logging
16 import uuid
17
18 from rest_framework import status
19 from rest_framework.decorators import api_view
20 from rest_framework.response import Response
21
22 from lcm.pub.utils.values import ignore_case_get
23 from lcm.pub.utils.syscomm import fun_name
24 from lcm.packages import ns_package, nf_package, sdc_ns_package, sdc_nf_package
25
26 logger = logging.getLogger(__name__)
27
28 @api_view(http_method_names=['POST', 'GET'])
29 def ns_distribute_get(request, *args, **kwargs):
30     logger.debug("Enter %s, method is %s", fun_name(), request.method)
31     ret, normal_status = None, None
32     if request.method == 'GET':
33         ret = sdc_ns_package.SdcNsPackage().get_csars()
34         normal_status = status.HTTP_200_OK
35     else:
36         csar_id = ignore_case_get(request.data, "csarId")
37         logger.debug("csar_id is %s", csar_id)
38         ret = sdc_ns_package.ns_on_distribute(csar_id)      
39         normal_status = status.HTTP_202_ACCEPTED
40     logger.debug("Leave %s, Return value is %s", fun_name(), ret)
41     if ret[0] != 0:
42         return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
43     return Response(data=ret[1], status=normal_status)
44
45 @api_view(http_method_names=['GET', 'DELETE'])
46 def ns_rd_csar(request, *args, **kwargs):
47     csar_id = ignore_case_get(kwargs, "csarId")
48     logger.info("Enter %s, method is %s, csar_id is %s", fun_name(), request.method, csar_id)
49     ret, normal_status = None, None
50     if request.method == 'GET':
51         ret = sdc_ns_package.ns_get_csar(csar_id)
52         normal_status = status.HTTP_200_OK
53     else:
54         force_delete = csar_id.endswith("force")
55         if force_delete:
56             csar_id = csar_id[:-5]
57         ret = sdc_ns_package.ns_delete_csar(csar_id, force_delete)
58         normal_status = status.HTTP_202_ACCEPTED
59     logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
60     if ret[0] != 0:
61         return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
62     return Response(data=ret[1], status=normal_status)
63
64 ####################################################################################################    
65
66 @api_view(http_method_names=['POST', 'GET'])
67 def nf_distribute_get(request, *args, **kwargs):
68     logger.debug("Enter %s%s, method is %s", fun_name(), request.data, request.method)
69     ret, normal_status = None, None
70     if request.method == 'GET':
71         ret = sdc_nf_package.nf_get_csars()
72         normal_status = status.HTTP_200_OK
73     else:
74         csar_id = ignore_case_get(request.data, "csarId")
75         vim_ids = ignore_case_get(request.data, "vimIds")
76         lab_vim_id = ignore_case_get(request.data, "labVimId")
77         job_id = str(uuid.uuid4())
78         sdc_nf_package.SdcNfDistributeThread(csar_id, vim_ids, lab_vim_id, job_id).start()
79         ret = [0, {"jobId": job_id}]
80         normal_status = status.HTTP_202_ACCEPTED
81     logger.debug("Leave %s, Return value is %s", fun_name(), ret)
82     if ret[0] != 0:
83         return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
84     return Response(data=ret[1], status=normal_status)
85
86 @api_view(http_method_names=['GET', 'DELETE'])
87 def nf_rd_csar(request, *args, **kwargs):
88     csar_id = ignore_case_get(kwargs, "csarId")
89     logger.info("Enter %s, method is %s, csar_id is %s", fun_name(), request.method, csar_id)
90     ret, normal_status = None, None
91     if request.method == 'GET':
92         ret = sdc_nf_package.nf_get_csar(csar_id)
93         normal_status = status.HTTP_200_OK
94     else:
95         force_delete = csar_id.endswith("force")
96         if force_delete:
97             csar_id = csar_id[:-5]
98         job_id = str(uuid.uuid4())
99         sdc_nf_package.SdcNfPkgDeleteThread(csar_id, job_id, force_delete).start()
100         ret = [0, {"jobId": job_id}]
101         normal_status = status.HTTP_202_ACCEPTED
102     logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
103     if ret[0] != 0:
104         return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
105     return Response(data=ret[1], status=normal_status)
106
107 ####################################################################################################    
108
109 @api_view(http_method_names=['POST'])
110 def ns_on_boarding(request, *args, **kwargs):
111     csar_id = ignore_case_get(request.data, "csarId")
112     logger.info("Enter %s, method is %s, csar_id is %s", fun_name(), request.method, csar_id)
113     ret = ns_package.ns_on_boarding(csar_id)
114     logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
115     if ret[0] != 0:
116         return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
117     return Response(data=ret[1], status=status.HTTP_202_ACCEPTED)
118
119
120 @api_view(http_method_names=['GET', 'DELETE'])
121 def ns_access_csar(request, *args, **kwargs):
122     csar_id = ignore_case_get(kwargs, "csarId")
123     logger.info("Enter %s, method is %s, csar_id is %s", fun_name(), request.method, csar_id)
124     ret, normal_status = None, None
125     if request.method == 'GET':
126         ret = ns_package.ns_get_csar(csar_id)
127         normal_status = status.HTTP_200_OK
128     else:
129         ret = ns_package.ns_delete_csar(csar_id)
130         normal_status = status.HTTP_202_ACCEPTED
131     logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
132     if ret[0] != 0:
133         return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
134     return Response(data=ret[1], status=normal_status)
135
136
137 @api_view(http_method_names=['DELETE'])
138 def ns_delete_pending_csar(request, *args, **kwargs):
139     csar_id = ignore_case_get(kwargs, "csarId")
140     logger.info("Enter %s, method is %s, csar_id is %s", fun_name(), request.method, csar_id)
141     ret = ns_package.ns_delete_pending_csar(csar_id)
142     logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
143     if ret[0] != 0:
144         return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
145     return Response(data=ret[1], status=status.HTTP_202_ACCEPTED)
146
147
148 @api_view(http_method_names=['PUT'])
149 def ns_set_state_csar(request, *args, **kwargs):
150     csar_id = ignore_case_get(kwargs, "csarId")
151     operation = ignore_case_get(kwargs, "operation")
152     logger.info("Enter %s, method is %s, csar_id is %s, operation is %s", fun_name(), request.method, csar_id, operation)
153     ret = ns_package.ns_set_state_csar(csar_id, operation)
154     logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
155     if ret[0] != 0:
156         return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
157     return Response(data=ret[1], status=status.HTTP_202_ACCEPTED)
158
159 #################################################################################################################
160 @api_view(http_method_names=['POST', 'GET'])
161 def nf_on_boarding(request, *args, **kwargs):
162     logger.info("Enter %s%s, method is %s", fun_name(), request.data, request.method)
163     if request.method == 'GET':
164         ret = nf_package.NfPackage().get_csars()
165         logger.debug("csars=%s", str(ret))
166         return Response(data=ret, status=status.HTTP_200_OK)
167     csar_id = ignore_case_get(request.data, "csarId")
168     vim_ids = ignore_case_get(request.data, "vimIds")
169     lab_vim_id = ignore_case_get(request.data, "labVimId")
170     job_id = str(uuid.uuid4())
171     nf_package.NfOnBoardingThread(csar_id, vim_ids, lab_vim_id, job_id).start()
172     ret = {"jobId": job_id}
173     logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
174     return Response(data=ret, status=status.HTTP_202_ACCEPTED)
175
176
177 @api_view(http_method_names=['GET', 'DELETE'])
178 def nf_access_csar(request, *args, **kwargs):
179     logger.info("Enter %s%s, method is %s", fun_name(), args, request.method)
180     csar_id = ignore_case_get(kwargs, "csarId")
181     if request.method == 'GET':
182         ret = nf_package.NfPackage().get_csar(csar_id)
183         logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
184         if ret[0] != 0:
185             return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
186         return Response(data=ret[1], status=status.HTTP_200_OK)
187     # NF package deleting
188     job_id = str(uuid.uuid4())
189     nf_package.NfPkgDeleteThread(csar_id, job_id).start()
190     ret = {"jobId": job_id}
191     logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
192     return Response(data=ret, status=status.HTTP_202_ACCEPTED)
193
194
195 @api_view(http_method_names=['DELETE'])
196 def nf_delete_pending_csar(request, *args, **kwargs):
197     logger.info("Enter %s%s, method is %s", fun_name(), args, request.method)
198     csar_id = ignore_case_get(kwargs, "csarId")
199     job_id = str(uuid.uuid4())
200     nf_package.NfPkgDeletePendingThread(csar_id, job_id).start()
201     ret = {"jobId": job_id}
202     logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
203     return Response(data=ret, status=status.HTTP_202_ACCEPTED)