1 # Copyright 2016-2017 ZTE Corporation.
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 import status
19 from rest_framework.decorators import api_view
20 from rest_framework.response import Response
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
26 logger = logging.getLogger(__name__)
29 @api_view(http_method_names=['POST', 'GET'])
30 def ns_distribute_get(request, *args, **kwargs):
31 logger.debug("Enter %s, method is %s", fun_name(), request.method)
32 ret, normal_status = None, None
33 if request.method == 'GET':
34 ret = sdc_ns_package.SdcNsPackage().get_csars()
35 normal_status = status.HTTP_200_OK
37 csar_id = ignore_case_get(request.data, "csarId")
38 logger.debug("csar_id is %s", csar_id)
39 ret = sdc_ns_package.ns_on_distribute(csar_id)
40 normal_status = status.HTTP_202_ACCEPTED
41 logger.debug("Leave %s, Return value is %s", fun_name(), ret)
43 return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
44 return Response(data=ret[1], status=normal_status)
47 @api_view(http_method_names=['GET', 'DELETE'])
48 def ns_rd_csar(request, *args, **kwargs):
49 csar_id = ignore_case_get(kwargs, "csarId")
50 logger.info("Enter %s, method is %s, csar_id is %s", fun_name(), request.method, csar_id)
51 ret, normal_status = None, None
52 if request.method == 'GET':
53 ret = sdc_ns_package.ns_get_csar(csar_id)
54 normal_status = status.HTTP_200_OK
56 force_delete = csar_id.endswith("force")
58 csar_id = csar_id[:-5]
59 ret = sdc_ns_package.ns_delete_csar(csar_id, force_delete)
60 normal_status = status.HTTP_202_ACCEPTED
61 logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
63 return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
64 return Response(data=ret[1], status=normal_status)
67 ####################################################################################################
68 @api_view(http_method_names=['POST', 'GET'])
69 def nf_distribute_get(request, *args, **kwargs):
70 logger.debug("Enter %s%s, method is %s", fun_name(), request.data, request.method)
71 ret, normal_status = None, None
72 if request.method == 'GET':
73 ret = sdc_nf_package.nf_get_csars()
74 normal_status = status.HTTP_200_OK
76 csar_id = ignore_case_get(request.data, "csarId")
77 vim_ids = ignore_case_get(request.data, "vimIds")
78 lab_vim_id = ignore_case_get(request.data, "labVimId")
79 job_id = str(uuid.uuid4())
80 sdc_nf_package.SdcNfDistributeThread(csar_id, vim_ids, lab_vim_id, job_id).start()
81 ret = [0, {"jobId": job_id}]
82 normal_status = status.HTTP_202_ACCEPTED
83 logger.debug("Leave %s, Return value is %s", fun_name(), ret)
85 return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
86 return Response(data=ret[1], status=normal_status)
89 @api_view(http_method_names=['GET', 'DELETE'])
90 def nf_rd_csar(request, *args, **kwargs):
91 csar_id = ignore_case_get(kwargs, "csarId")
92 logger.info("Enter %s, method is %s, csar_id is %s", fun_name(), request.method, csar_id)
93 ret, normal_status = None, None
94 if request.method == 'GET':
95 ret = sdc_nf_package.nf_get_csar(csar_id)
96 normal_status = status.HTTP_200_OK
98 force_delete = csar_id.endswith("force")
100 csar_id = csar_id[:-5]
101 job_id = str(uuid.uuid4())
102 sdc_nf_package.SdcNfPkgDeleteThread(csar_id, job_id, force_delete).start()
103 ret = [0, {"jobId": job_id}]
104 normal_status = status.HTTP_202_ACCEPTED
105 logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
107 return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
108 return Response(data=ret[1], status=normal_status)
111 ####################################################################################################
112 @api_view(http_method_names=['POST'])
113 def ns_on_boarding(request, *args, **kwargs):
114 csar_id = ignore_case_get(request.data, "csarId")
115 logger.info("Enter %s, method is %s, csar_id is %s", fun_name(), request.method, csar_id)
116 ret = ns_package.ns_on_boarding(csar_id)
117 logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
119 return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
120 return Response(data=ret[1], status=status.HTTP_202_ACCEPTED)
123 @api_view(http_method_names=['GET', 'DELETE'])
124 def ns_access_csar(request, *args, **kwargs):
125 csar_id = ignore_case_get(kwargs, "csarId")
126 logger.info("Enter %s, method is %s, csar_id is %s", fun_name(), request.method, csar_id)
127 ret, normal_status = None, None
128 if request.method == 'GET':
129 ret = ns_package.ns_get_csar(csar_id)
130 normal_status = status.HTTP_200_OK
132 ret = ns_package.ns_delete_csar(csar_id)
133 normal_status = status.HTTP_202_ACCEPTED
134 logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
136 return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
137 return Response(data=ret[1], status=normal_status)
140 @api_view(http_method_names=['DELETE'])
141 def ns_delete_pending_csar(request, *args, **kwargs):
142 csar_id = ignore_case_get(kwargs, "csarId")
143 logger.info("Enter %s, method is %s, csar_id is %s", fun_name(), request.method, csar_id)
144 ret = ns_package.ns_delete_pending_csar(csar_id)
145 logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
147 return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
148 return Response(data=ret[1], status=status.HTTP_202_ACCEPTED)
151 @api_view(http_method_names=['PUT'])
152 def ns_set_state_csar(request, *args, **kwargs):
153 csar_id = ignore_case_get(kwargs, "csarId")
154 operation = ignore_case_get(kwargs, "operation")
155 logger.info("Enter %s, method is %s, csar_id is %s, operation is %s", fun_name(), request.method, csar_id, operation)
156 ret = ns_package.ns_set_state_csar(csar_id, operation)
157 logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
159 return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
160 return Response(data=ret[1], status=status.HTTP_202_ACCEPTED)
163 #################################################################################################################
164 @api_view(http_method_names=['POST', 'GET'])
165 def nf_on_boarding(request, *args, **kwargs):
166 logger.info("Enter %s%s, method is %s", fun_name(), request.data, request.method)
167 if request.method == 'GET':
168 ret = nf_package.NfPackage().get_csars()
169 logger.debug("csars=%s", str(ret))
170 return Response(data=ret, status=status.HTTP_200_OK)
171 csar_id = ignore_case_get(request.data, "csarId")
172 vim_ids = ignore_case_get(request.data, "vimIds")
173 lab_vim_id = ignore_case_get(request.data, "labVimId")
174 job_id = str(uuid.uuid4())
175 nf_package.NfOnBoardingThread(csar_id, vim_ids, lab_vim_id, job_id).start()
176 ret = {"jobId": job_id}
177 logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
178 return Response(data=ret, status=status.HTTP_202_ACCEPTED)
181 @api_view(http_method_names=['GET', 'DELETE'])
182 def nf_access_csar(request, *args, **kwargs):
183 logger.info("Enter %s%s, method is %s", fun_name(), args, request.method)
184 csar_id = ignore_case_get(kwargs, "csarId")
185 if request.method == 'GET':
186 ret = nf_package.NfPackage().get_csar(csar_id)
187 logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
189 return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
190 return Response(data=ret[1], status=status.HTTP_200_OK)
191 # NF package deleting
192 job_id = str(uuid.uuid4())
193 nf_package.NfPkgDeleteThread(csar_id, job_id).start()
194 ret = {"jobId": job_id}
195 logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
196 return Response(data=ret, status=status.HTTP_202_ACCEPTED)
199 @api_view(http_method_names=['DELETE'])
200 def nf_delete_pending_csar(request, *args, **kwargs):
201 logger.info("Enter %s%s, method is %s", fun_name(), args, request.method)
202 csar_id = ignore_case_get(kwargs, "csarId")
203 job_id = str(uuid.uuid4())
204 nf_package.NfPkgDeletePendingThread(csar_id, job_id).start()
205 ret = {"jobId": job_id}
206 logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
207 return Response(data=ret, status=status.HTTP_202_ACCEPTED)