Remove the useless judgement
[vfc/nfvo/driver/vnfm/svnfm.git] / huawei / vnfmadapter / VnfmadapterService / service / src / main / java / org / onap / vfc / nfvo / vnfm / svnfm / vnfmadapter / service / adapter / impl / AdapterResourceManager.java
1 /*
2  * Copyright 2016-2017 Huawei Technologies Co., Ltd.
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
17 package org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.adapter.impl;
18
19 import java.io.BufferedInputStream;
20 import java.io.FileInputStream;
21 import java.io.FileNotFoundException;
22 import java.io.IOException;
23 import java.io.InputStream;
24 import java.util.HashMap;
25 import java.util.Map;
26
27 import org.apache.commons.httpclient.HttpMethod;
28 import org.apache.commons.httpclient.HttpStatus;
29 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.DownloadCsarManager;
30 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.VnfmException;
31 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.restclient.RestfulResponse;
32 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.restclient.SystemEnvVariablesFactory;
33 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.servicetoken.VNFRestfulUtil;
34 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.adapter.inf.IResourceManager;
35 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.constant.Constant;
36 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.constant.UrlConstant;
37 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.csm.connect.ConnectMgrVnfm;
38 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.csm.connect.HttpRequests;
39 import org.slf4j.Logger;
40 import org.slf4j.LoggerFactory;
41
42 import net.sf.json.JSONArray;
43 import net.sf.json.JSONException;
44 import net.sf.json.JSONObject;
45
46 /**
47  * Resource Manager adapter class.
48  * .</br>
49  *
50  * @author
51  * @version VFC 1.0 Sep 13, 2016
52  */
53 public class AdapterResourceManager implements IResourceManager {
54
55     private static final Logger LOG = LoggerFactory.getLogger(AdapterResourceManager.class);
56
57     @Override
58     public JSONObject uploadVNFPackage(JSONObject vnfpkg, Map<String, String> paramsMap) {
59         JSONObject resultObj = new JSONObject();
60         JSONObject csarTempObj = new JSONObject();
61
62         try {
63             // if upper layer do not provide vnfpackage info,then get the
64             // vnfpackage info from JSON file.
65             if(vnfpkg == null || vnfpkg.isEmpty()) {
66                 String vnfPkgInfo = readVfnPkgInfoFromJson();
67                 vnfpkg = JSONObject.fromObject(vnfPkgInfo); // NOSONAR
68             }
69         } catch(IOException e) {
70             LOG.error("function=uploadVNFPackage", e);
71         }
72
73         // check if parameters are null.
74         if(paramsMap == null || paramsMap.isEmpty()) {
75             resultObj.put("reason", "csarid and vnfmid are null.");
76             resultObj.put("retCode", Constant.REST_FAIL);
77             return resultObj;
78         }
79
80         String csarid = paramsMap.get("csarid");
81         String vnfmid = paramsMap.get("vnfmid");
82         String vnfdid = "";
83         String vnfDescriptorId = paramsMap.get("vnfDescriptorId");
84         if(null == csarid || "".equals(csarid)) {
85             resultObj.put("reason", "csarid is null.");
86             resultObj.put("retCode", Constant.REST_FAIL);
87             return resultObj;
88         }
89         if(null == vnfmid || "".equals(vnfmid)) {
90             resultObj.put("reason", "vnfmid is null.");
91             resultObj.put("retCode", Constant.REST_FAIL);
92             return resultObj;
93         }
94
95         // obtain CSAR package info
96         JSONObject csarobj = getVnfmCsarInfo(csarid);
97         String downloadUri = "";
98         if(Integer.valueOf(csarobj.get("retCode").toString()) == Constant.HTTP_OK) {
99             LOG.info("get CSAR info successful.", csarobj.get("retCode"));
100             downloadUri = csarobj.getString("downloadUri");
101         } else {
102             LOG.error("get CSAR info fail.", csarobj.get("retCode"));
103             resultObj.put("reason", csarobj.get("reason").toString());
104             resultObj.put("retCode", Constant.REST_FAIL);
105             return resultObj;
106         }
107
108         csarTempObj = vnfpkg.getJSONObject("template");
109         String csarfilepath = csarTempObj.getString("csar_file_path");
110         String csarfilename = csarTempObj.getString("csar_file_name");
111
112         // download csar package and save in location.
113         JSONObject downloadObject =
114                 downloadCsar(downloadUri, csarfilepath + System.getProperty("file.separator") + csarfilename);
115
116         if(Integer.valueOf(downloadObject.get("retCode").toString()) != Constant.REST_SUCCESS) {
117             LOG.error("download CSAR fail.", downloadObject.get("retCode"));
118             resultObj.put("reason", downloadObject.get("reason").toString());
119             resultObj.put("retCode", downloadObject.get("retCode").toString());
120             return resultObj;
121         }
122         LOG.info("download CSAR successful.", downloadObject.get("retCode"));
123
124         // unzip csar package to location.
125         JSONObject unzipObject =
126                 unzipCSAR(csarfilepath + System.getProperty("file.separator") + csarfilename, csarfilepath);
127
128         if(Integer.valueOf(unzipObject.get("retCode").toString()) != Constant.REST_SUCCESS) {
129             LOG.error("unzip CSAR fail.", unzipObject.get("retCode"));
130             resultObj.put("reason", unzipObject.get("reason").toString());
131             resultObj.put("retCode", unzipObject.get("retCode").toString());
132             return resultObj;
133         }
134         LOG.info("unzip CSAR successful.", unzipObject.get("retCode"));
135
136         Map<String, String> vnfmMap = new HashMap<>();
137         vnfmMap.put("url", String.format(UrlConstant.REST_VNFMINFO_GET, vnfmid));
138         vnfmMap.put("methodType", Constant.GET);
139
140         // get VNFM connection info
141         JSONObject vnfmObject = getVnfmConnInfo(vnfmMap);
142         if(Integer.valueOf(vnfmObject.get("retCode").toString()) != Constant.HTTP_OK) {
143             LOG.error("get Vnfm Connection Info fail.", vnfmObject.get("retCode"));
144             resultObj.put("reason", vnfmObject.get("reason").toString());
145             resultObj.put("retCode", vnfmObject.get("retCode").toString());
146             return resultObj;
147         }
148         LOG.info("get Vnfm Connection Info successful.", vnfmObject.get("retCode"));
149
150         String vnfmUrl = vnfmObject.getString("url");
151         String userName = vnfmObject.getString("userName");
152         String password = vnfmObject.getString("password");
153
154         // build VNFM connection and get token
155         ConnectMgrVnfm mgrVcmm = new ConnectMgrVnfm();
156
157         JSONObject connObject = new JSONObject();
158         connObject.put("url", vnfmUrl);
159         connObject.put("userName", userName);
160         connObject.put("password", password);
161         if(Constant.HTTP_OK != mgrVcmm.connect(vnfmObject, Constant.CERTIFICATE)) {
162             LOG.error("get Access Session fail.");
163             resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
164             resultObj.put("reason", "connect fail.");
165             return resultObj;
166         }
167         LOG.info("get Access Session successful.");
168         String connToken = mgrVcmm.getAccessSession();
169
170         // get vim_id
171         JSONObject cloudObject = getAllCloud(vnfmUrl, connToken);
172         String vimId = "";
173
174         if(!cloudObject.isEmpty() && cloudObject.get(Constant.RETCODE).equals(HttpStatus.SC_OK)) {
175             LOG.info("get all cloud successful.", cloudObject.get(Constant.RETCODE));
176             vimId = cloudObject.getString("vim_id");
177         } else {
178             LOG.error("get all cloud fail.", cloudObject.get(Constant.RETCODE));
179             return cloudObject;
180         }
181
182         // upload VNF package
183         csarTempObj.getJSONArray("vim_list").getJSONObject(0).put("vim_id", vimId);
184         vnfpkg.put("template", csarTempObj);
185         LOG.info("vnfpkg: " + vnfpkg);
186
187         JSONObject uploadPkgObject = upload(vnfpkg, vnfmUrl, connToken);
188         LOG.info("uploadPkgObject:" + uploadPkgObject);
189         if(vnfdid == null || "".equals(vnfdid.trim())) {
190             JSONObject vnfdConf = readVnfdIdInfoFromJson();
191             LOG.info("vnfdConf=" + vnfdConf);
192             if(vnfdConf.containsKey(vnfDescriptorId)) {
193                 vnfdid = vnfdConf.getString(vnfDescriptorId);
194             }
195         }
196         LOG.info("set vnfdId=" + vnfdid);
197
198         // get vnfd version
199         String vnfdVersion = "";
200
201         JSONObject vnfdVerObject =
202                 getVnfdVersion(vnfmUrl, String.format(UrlConstant.URL_VNFDINFO_GET, vnfdid), connToken);
203         LOG.info("vnfdVerObject:" + vnfdVerObject);
204         if(!vnfdVerObject.isEmpty() && vnfdVerObject.get(Constant.RETCODE).equals(HttpStatus.SC_OK)) {
205             LOG.info("get vnfd version successful.", vnfdVerObject.get(Constant.RETCODE));
206             JSONArray verArr = vnfdVerObject.getJSONArray("templates");
207             JSONObject verTmpObj = verArr.getJSONObject(0);
208
209             vnfdVersion = verTmpObj.getString("vnfdVersion");
210         } else {
211             LOG.error("get vnfd version fail.", vnfdVerObject.get(Constant.RETCODE));
212             return vnfdVerObject;
213         }
214
215         // get vnfd plan info
216         String planName = "";
217         String planId = "";
218
219         JSONObject vnfdPlanInfo = getVNFDPlanInfo(vnfmUrl, vnfdid, connToken);
220         LOG.info("vnfdPlanInfo:" + vnfdPlanInfo);
221         JSONObject inputsObj = new JSONObject();
222         if(!vnfdPlanInfo.isEmpty() && vnfdPlanInfo.get(Constant.RETCODE).equals(HttpStatus.SC_OK)) {
223             LOG.info("get vnfd plan info successful.", vnfdPlanInfo.get(Constant.RETCODE));
224             JSONObject planTmpObj = vnfdPlanInfo.getJSONObject("template");
225             String templateName = planTmpObj.getString("template_name").trim();
226             JSONArray topoTmpObj = planTmpObj.getJSONArray("topology_template");
227
228             JSONObject planObj = topoTmpObj.getJSONObject(0);
229             if("VNFD_vUGW".equals(templateName)) {
230                 for(int i = 0; i < topoTmpObj.size(); i++) {
231                     String name = topoTmpObj.getJSONObject(i).getString("plan_name").trim();
232                     if("Normal_E9K".equals(name)) {
233                         planObj = topoTmpObj.getJSONObject(i);
234                     }
235                 }
236             }
237
238             planName = planObj.getString("plan_name");
239             planId = planObj.getString("plan_id");
240             if(planObj.containsKey("inputs")) {
241                 JSONArray inputs = planObj.getJSONArray("inputs");
242                 for(int i = 0; i < inputs.size(); i++) {
243                     JSONObject obj = inputs.getJSONObject(i);
244                     obj.put("value", obj.getString("default"));
245                 }
246                 inputsObj.put("inputs", inputs);
247                 inputsObj.put("External_network", new JSONArray());
248             }
249         } else {
250             LOG.error("get vnfd plan info fail.", vnfdPlanInfo.get(Constant.RETCODE));
251             return vnfdPlanInfo;
252         }
253
254         // return values
255         resultObj.put("retCode", Constant.HTTP_OK);
256         resultObj.put("vnfdId", vnfdid);
257         resultObj.put("vnfdVersion", vnfdVersion);
258         resultObj.put("planName", planName);
259         resultObj.put("planId", planId);
260         resultObj.put("parameters", inputsObj);
261         LOG.info("resultObj:" + resultObj.toString());
262
263         return resultObj;
264     }
265
266     private JSONObject sendRequest(Map<String, String> paramsMap) {
267         JSONObject resultObj = new JSONObject();
268         RestfulResponse rsp = VNFRestfulUtil.getRemoteResponse(paramsMap, "");
269         if(null == rsp) {
270             LOG.error("function=sendRequest,  RestfulResponse is null");
271             resultObj.put("reason", "RestfulResponse is null.");
272             resultObj.put("retCode", Constant.REST_FAIL);
273             return resultObj;
274         }
275         String resultCreate = rsp.getResponseContent();
276
277         if(rsp.getStatus() == Constant.HTTP_OK) {
278             LOG.warn("function=sendRequest, msg= status={}, result={}.", rsp.getStatus(), resultCreate);
279             resultObj = JSONObject.fromObject(resultCreate);
280             resultObj.put("retCode", Constant.HTTP_OK);
281             return resultObj;
282         } else {
283             LOG.error("function=sendRequest, msg=ESR return fail,status={}, result={}.", rsp.getStatus(), resultCreate);
284             resultObj.put("reason", "ESR return fail.");
285         }
286         resultObj.put("retCode", Constant.REST_FAIL);
287         return resultObj;
288     }
289
290     @Override
291     public JSONObject getVnfmCsarInfo(String csarid) {
292         JSONObject resultObj = new JSONObject();
293
294         if(null == csarid || "".equals(csarid)) {
295             resultObj.put("reason", "csarid is null.");
296             resultObj.put("retCode", Constant.REST_FAIL);
297             return resultObj;
298         }
299
300         Map<String, String> paramsMap = new HashMap<String, String>();
301
302         paramsMap.put("url", String.format(UrlConstant.REST_CSARINFO_GET, csarid));
303         paramsMap.put("methodType", Constant.GET);
304
305         return this.sendRequest(paramsMap);
306     }
307
308     @Override
309     public JSONObject downloadCsar(String url, String filePath) {
310         JSONObject resultObj = new JSONObject();
311
312         if(url == null || "".equals(url)) {
313             resultObj.put("reason", "url is null.");
314             resultObj.put("retCode", Constant.REST_FAIL);
315             return resultObj;
316         }
317         if(filePath == null || "".equals(filePath)) {
318             resultObj.put("reason", "downloadUrl filePath is null.");
319             resultObj.put("retCode", Constant.REST_FAIL);
320             return resultObj;
321         }
322
323         String status = DownloadCsarManager.download(url, filePath);
324
325         if(Constant.DOWNLOADCSAR_SUCCESS.equals(status)) {
326             resultObj.put("reason", "download csar file successfully.");
327             resultObj.put("retCode", Constant.REST_SUCCESS);
328         } else {
329             resultObj.put("reason", "download csar file failed.");
330             resultObj.put("retCode", Constant.REST_FAIL);
331         }
332         return resultObj;
333     }
334
335     @Override
336     public JSONObject getAllCloud(String url, String conntoken) {
337         JSONObject resultObj = new JSONObject();
338         JSONArray resArray = new JSONArray();
339
340         if(url == null || url.equals("")) {
341             url = "http://127.0.0.1:31943";
342         }
343
344         // get vim_id
345         HttpMethod httpMethodCloud = null;
346         try {
347             httpMethodCloud =
348                     new HttpRequests.Builder(Constant.CERTIFICATE).setUrl(url.trim(), UrlConstant.URL_ALLCLOUD_NEW_GET)
349                             .addHeader(Constant.HEADER_AUTH_TOKEN, conntoken).setParams("").get().execute();
350
351             int statusCode = httpMethodCloud.getStatusCode();
352
353             String result = httpMethodCloud.getResponseBodyAsString();
354             LOG.info(result);
355             if(statusCode == HttpStatus.SC_OK) {
356                 JSONObject vimInfo = JSONObject.fromObject(result);
357                 resArray = vimInfo.getJSONArray("vim_info");
358                 resultObj = resArray.getJSONObject(0);
359                 resultObj.put(Constant.RETCODE, statusCode);
360             } else {
361                 LOG.error("uploadVNFPackage get allcloud failed, code:" + statusCode + " re:" + result);
362                 resultObj.put(Constant.RETCODE, statusCode);
363                 resultObj.put("reason", "get allcloud failed. code:" + statusCode + " re:" + result);
364                 return resultObj;
365             }
366         } catch(JSONException e) {
367             LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage get allcloud JSONException e={}.", e);
368             resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
369             resultObj.put("reason", "get allcloud failed and JSONException." + e.getMessage());
370             return resultObj;
371         } catch(VnfmException e) {
372             LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage get allcloud VnfmException e={}.", e);
373             resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
374             resultObj.put("reason", "get allcloud failed and VnfmException." + e.getMessage());
375             return resultObj;
376         } catch(IOException e) {
377             LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage get allcloud IOException e={}.", e);
378             resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
379             resultObj.put("reason", "get allcloud failed and IOException." + e.getMessage());
380             return resultObj;
381         }
382         return resultObj;
383     }
384
385     /**
386      * Upload vnfpackage<br>
387      *
388      * @param vnfpackage
389      * @param vnfmurl
390      * @param conntoken
391      * @return
392      * @since VFC 1.0
393      */
394     public JSONObject upload(JSONObject vnfpackage, String vnfmurl, String conntoken) {
395         JSONObject resultObj = new JSONObject();
396         HttpMethod httpMethodVnf = null;
397
398         try {
399             httpMethodVnf = new HttpRequests.Builder(Constant.CERTIFICATE)
400                     .setUrl(vnfmurl.trim(), UrlConstant.URL_VNFPACKAGE_POST).setParams(vnfpackage.toString())
401                     .addHeader(Constant.HEADER_AUTH_TOKEN, conntoken).post().execute();
402
403             int statusCodeUp = httpMethodVnf.getStatusCode();
404
405             String resultUp = httpMethodVnf.getResponseBodyAsString();
406
407             if(statusCodeUp == HttpStatus.SC_CREATED || statusCodeUp == HttpStatus.SC_OK) {
408                 LOG.info("uploadVNFPackage upload VNF package successful, code:" + statusCodeUp + " re:" + resultUp);
409                 resultObj = JSONObject.fromObject(resultUp);
410                 resultObj.put(Constant.RETCODE, statusCodeUp);
411             } else {
412                 LOG.error("uploadVNFPackage upload VNF package failed, code:" + statusCodeUp + " re:" + resultUp);
413                 resultObj.put(Constant.RETCODE, statusCodeUp);
414                 resultObj.put("data", "upload VNF package failed, code:" + statusCodeUp + " re:" + resultUp);
415                 return resultObj;
416             }
417         } catch(JSONException e) {
418             LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage upload VNF package JSONException e={}.", e);
419             resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
420             resultObj.put("reason", "upload VNF package failed and JSONException." + e.getMessage());
421             return resultObj;
422         } catch(VnfmException e) {
423             LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage upload VNF package VnfmException e={}.", e);
424             resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
425             resultObj.put("reason", "upload VNF package failed and VnfmException." + e.getMessage());
426             return resultObj;
427         } catch(IOException e) {
428             LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage upload VNF package IOException e={}.", e);
429             resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
430             resultObj.put("reason", "upload VNF package failed and IOException." + e.getMessage());
431             return resultObj;
432         }
433         return resultObj;
434     }
435
436     /**
437      * Find vnfd version.<br>
438      *
439      * @param prefixUrl
440      * @param serviceUrl
441      * @return
442      * @since VFC 1.0
443      */
444     public JSONObject getVnfdVersion(String prefixUrl, String serviceUrl, String conntoken) {
445         JSONObject resultObj = new JSONObject();
446         HttpMethod httpMethodVnfd = null;
447         try {
448             httpMethodVnfd = new HttpRequests.Builder(Constant.CERTIFICATE).setUrl(prefixUrl.trim(), serviceUrl)
449                     .setParams("").addHeader(Constant.HEADER_AUTH_TOKEN, conntoken).get().execute();
450
451             int statusCodeVnfd = httpMethodVnfd.getStatusCode();
452
453             String resultVnfd = httpMethodVnfd.getResponseBodyAsString();
454             LOG.info("getVnfdVersion result:" + resultVnfd);
455             if(statusCodeVnfd == HttpStatus.SC_OK) {
456                 resultObj = JSONObject.fromObject(resultVnfd);
457                 resultObj.put(Constant.RETCODE, statusCodeVnfd);
458             } else {
459                 LOG.error("uploadVNFPackage vnfd version failed, code:" + statusCodeVnfd + " re:" + resultVnfd);
460                 resultObj.put(Constant.RETCODE, statusCodeVnfd);
461                 resultObj.put("data", "get vnfd version failed, code:" + statusCodeVnfd + " re:" + resultVnfd);
462                 return resultObj;
463             }
464         } catch(JSONException e) {
465             LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage get vnfd version JSONException e={}.", e);
466             resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
467             resultObj.put("reason", "get vnfd version failed and JSONException." + e.getMessage());
468             return resultObj;
469         } catch(VnfmException e) {
470             LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage get vnfd version VnfmException e={}.", e);
471             resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
472             resultObj.put("reason", "get vnfd version failed and VnfmException." + e.getMessage());
473             return resultObj;
474         } catch(IOException e) {
475             LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage get vnfd version IOException e={}.", e);
476             resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
477             resultObj.put("reason", "get vnfd version failed and IOException." + e.getMessage());
478             return resultObj;
479         }
480         return resultObj;
481     }
482
483     /**
484      * Find VNFM connection information.<br>
485      *
486      * @param paramsMap
487      * @return
488      * @since VFC 1.0
489      */
490     public JSONObject getVnfmConnInfo(Map<String, String> paramsMap) {
491         return this.sendRequest(paramsMap);
492     }
493
494     @Override
495     public JSONObject getVNFDPlanInfo(String url, String vnfdid, String conntoken) {
496         JSONObject resultObj = new JSONObject();
497
498         HttpMethod httpMethodPlan = null;
499         try {
500             httpMethodPlan = new HttpRequests.Builder(Constant.CERTIFICATE)
501                     .setUrl(url.trim(), String.format(UrlConstant.URL_VNFDPLANINFO_GET, vnfdid)).setParams("")
502                     .addHeader(Constant.HEADER_AUTH_TOKEN, conntoken).get().execute();
503
504             int statusCode = httpMethodPlan.getStatusCode();
505
506             String result = httpMethodPlan.getResponseBodyAsString();
507             LOG.info("getVNFDPlanInfo result=" + result);
508             if(statusCode == HttpStatus.SC_OK) {
509                 resultObj = JSONObject.fromObject(result);
510                 resultObj.put(Constant.RETCODE, statusCode);
511             } else {
512                 LOG.error("uploadVNFPackage get VNFDPlanInfo failed, code:" + statusCode + " re:" + result);
513                 resultObj.put(Constant.RETCODE, statusCode);
514                 resultObj.put("reason", "get VNFDPlanInfo failed. code:" + statusCode + " re:" + result);
515                 return resultObj;
516             }
517         } catch(JSONException e) {
518             LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage get VNFDPlanInfo JSONException e={}.", e);
519             resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
520             resultObj.put("reason", "get VNFDPlanInfo failed and JSONException." + e.getMessage());
521             return resultObj;
522         } catch(VnfmException e) {
523             LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage get VNFDPlanInfo VnfmException e={}.", e);
524             resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
525             resultObj.put("reason", "get VNFDPlanInfo failed and VnfmException." + e.getMessage());
526             return resultObj;
527         } catch(IOException e) {
528             LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage get VNFDPlanInfo IOException e={}.", e);
529             resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
530             resultObj.put("reason", "get VNFDPlanInfo failed and IOException." + e.getMessage());
531             return resultObj;
532         }
533         return resultObj;
534     }
535
536     /**
537      * Get VNF package information.<br>
538      *
539      * @return
540      * @throws IOException
541      * @since VFC 1.0
542      */
543     public static String readVfnPkgInfoFromJson() throws IOException {
544         InputStream ins = null;
545         BufferedInputStream bins = null;
546         String fileContent = "";
547
548         String fileName = SystemEnvVariablesFactory.getInstance().getAppRoot() + System.getProperty("file.separator")
549                 + "etc" + System.getProperty("file.separator") + "vnfpkginfo" + System.getProperty("file.separator")
550                 + Constant.VNFPKGINFO;
551
552         try {
553             ins = new FileInputStream(fileName);
554             bins = new BufferedInputStream(ins);
555
556             byte[] contentByte = new byte[ins.available()];
557             int num = bins.read(contentByte);
558
559             if(num > 0) {
560                 fileContent = new String(contentByte);
561             }
562         } catch(FileNotFoundException e) {
563             LOG.error(fileName + "is not found!", e);
564         } finally {
565             if(ins != null) {
566                 ins.close();
567             }
568             if(bins != null) {
569                 bins.close();
570             }
571         }
572
573         return fileContent;
574     }
575
576     private static JSONObject readVnfdIdInfoFromJson() {
577         JSONObject jsonObject = new JSONObject();
578         InputStream ins = null;
579         BufferedInputStream bins = null;
580         String fileContent = "";
581
582         String fileName = SystemEnvVariablesFactory.getInstance().getAppRoot() + System.getProperty("file.separator")
583                 + "etc" + System.getProperty("file.separator") + "vnfpkginfo" + System.getProperty("file.separator")
584                 + "vnfd_ids.json";
585
586         try {
587             ins = new FileInputStream(fileName);
588             bins = new BufferedInputStream(ins);
589
590             byte[] contentByte = new byte[ins.available()];
591             int num = bins.read(contentByte);
592
593             if(num > 0) {
594                 fileContent = new String(contentByte);
595             }
596             if(fileContent != null) {
597                 jsonObject = JSONObject.fromObject(fileContent).getJSONObject("vnfdIds");
598             }
599             ins.close();
600             bins.close();
601         } catch(Exception e) {
602             LOG.error(fileName + " read error!", e);
603         } finally {
604
605         }
606
607         return jsonObject;
608     }
609
610     /*
611      * unzip CSAR packge
612      * @param fileName filePath
613      * @return
614      */
615     public JSONObject unzipCSAR(String fileName, String filePath) {
616         JSONObject resultObj = new JSONObject();
617
618         if(fileName == null || "".equals(fileName)) {
619             resultObj.put("reason", "fileName is null.");
620             resultObj.put("retCode", Constant.REST_FAIL);
621             return resultObj;
622         }
623         if(filePath == null || "".equals(filePath)) {
624             resultObj.put("reason", "unzipCSAR filePath is null.");
625             resultObj.put("retCode", Constant.REST_FAIL);
626             return resultObj;
627         }
628
629         int status = DownloadCsarManager.unzipCSAR(fileName, filePath);
630
631         if(Constant.UNZIP_SUCCESS == status) {
632             resultObj.put("reason", "unzip csar file successfully.");
633             resultObj.put("retCode", Constant.REST_SUCCESS);
634         } else {
635             resultObj.put("reason", "unzip csar file failed.");
636             resultObj.put("retCode", Constant.REST_FAIL);
637         }
638         return resultObj;
639     }
640
641 }