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__)
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
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)
42 return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
43 return Response(data=ret[1], status=normal_status)
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
54 force_delete = csar_id.endswith("force")
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))
61 return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
62 return Response(data=ret[1], status=normal_status)
64 ####################################################################################################
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
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)
83 return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
84 return Response(data=ret[1], status=normal_status)
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
95 force_delete = csar_id.endswith("force")
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))
104 return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
105 return Response(data=ret[1], status=normal_status)
107 ####################################################################################################
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))
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)
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
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))
133 return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
134 return Response(data=ret[1], status=normal_status)
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))
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)
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))
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)
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)
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))
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)
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)