2 * Copyright 2016-2017 Huawei Technologies Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.adapter.impl;
19 import java.io.BufferedInputStream;
21 import java.io.FileInputStream;
22 import java.io.FileNotFoundException;
23 import java.io.IOException;
24 import java.io.InputStream;
25 import java.util.HashMap;
28 import org.apache.commons.httpclient.HttpMethod;
29 import org.apache.commons.httpclient.HttpStatus;
30 import org.apache.commons.lang3.StringUtils;
31 import org.apache.commons.net.ftp.FTPClient;
32 import org.apache.commons.net.ftp.FTPReply;
33 import org.apache.commons.net.ftp.FTPSClient;
34 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.DownloadCsarManager;
35 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.VnfmException;
36 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.VnfmUtil;
37 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.restclient.RestfulResponse;
38 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.restclient.SystemEnvVariablesFactory;
39 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.servicetoken.VNFRestfulUtil;
40 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.adapter.inf.IResourceManager;
41 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.constant.Constant;
42 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.constant.UrlConstant;
43 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.csm.connect.ConnectMgrVnfm;
44 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.csm.connect.HttpRequests;
45 import org.slf4j.Logger;
46 import org.slf4j.LoggerFactory;
48 import net.sf.json.JSONArray;
49 import net.sf.json.JSONException;
50 import net.sf.json.JSONObject;
53 * Resource Manager adapter class. .</br>
56 * @version VFC 1.0 Sep 13, 2016
58 public class AdapterResourceManager implements IResourceManager {
60 private static final Logger LOG = LoggerFactory.getLogger(AdapterResourceManager.class);
62 private static final String VNFD_FILE_PATH = "vnfd_file_path";
65 public JSONObject uploadVNFPackage(JSONObject vnfpkge, Map<String, String> paramsMap) {
66 JSONObject resultObj = new JSONObject();
67 String vnfDescriptorId = paramsMap.get("vnfDescriptorId");
68 JSONObject vnfpkgJson = new JSONObject();
70 // if upper layer do not provide vnfpackage info,then get the
71 // vnfpackage info from JSON file.
72 if (vnfpkge == null || vnfpkge.isEmpty()) {
73 String vnfPkgInfo = readVfnPkgInfoFromJson();
74 vnfpkgJson = JSONObject.fromObject(vnfPkgInfo);
77 } catch (IOException e) {
78 LOG.error("function=uploadVNFPackage", e);
81 // check if parameters are null.
82 if (paramsMap == null || paramsMap.isEmpty()) {
83 resultObj.put(Constant.REASON, "csarid and vnfmid are null.");
84 resultObj.put(Constant.RETCODE, Constant.REST_FAIL);
88 String csarid = paramsMap.get("csarid");
89 String vnfmid = paramsMap.get("vnfmid");
92 if (null == csarid || "".equals(csarid)) {
93 resultObj.put(Constant.REASON, "csarid is null.");
94 resultObj.put(Constant.RETCODE, Constant.REST_FAIL);
97 if (null == vnfmid || "".equals(vnfmid)) {
98 resultObj.put(Constant.REASON, "vnfmid is null.");
99 resultObj.put(Constant.RETCODE, Constant.REST_FAIL);
103 // obtain CSAR package info
104 JSONObject csarobj = getVnfmCsarInfo(csarid);
105 String downloadUri = "";
106 String csarName = "";
107 if (Integer.valueOf(csarobj.get(Constant.RETCODE).toString()) == Constant.HTTP_OK) {
108 LOG.info("get CSAR info successful.", csarobj.get(Constant.RETCODE));
109 downloadUri = csarobj.getJSONObject("packageInfo").getString("downloadUrl");
110 csarName = csarobj.getJSONObject("packageInfo").getString("csarName");
112 LOG.error("get CSAR info fail.", csarobj.get(Constant.RETCODE));
113 resultObj.put(Constant.REASON, csarobj.get(Constant.REASON).toString());
114 resultObj.put(Constant.RETCODE, Constant.REST_FAIL);
118 String vnfdName = transferFromCsar(csarName);
119 JSONObject vnfpkg = vnfpkgJson.getJSONObject(vnfdName);
120 JSONObject csarTempObj = vnfpkg.getJSONObject("template");
121 String csarfilepath = csarTempObj.getString("csar_file_path");
122 String csarfilename = csarTempObj.getString("csar_file_name");
123 if (csarTempObj.containsKey("emsUuid")) {
124 emsUuid = csarTempObj.getString("emsUuid");
127 // download csar package and save in location.
128 JSONObject downloadObject = downloadCsar(downloadUri, csarfilepath + csarfilename);
130 if (Integer.valueOf(downloadObject.get(Constant.RETCODE).toString()) != Constant.REST_SUCCESS) {
131 LOG.error("download CSAR fail." + downloadObject.get(Constant.RETCODE));
132 resultObj.put(Constant.REASON, downloadObject.get(Constant.REASON).toString());
133 resultObj.put(Constant.RETCODE, downloadObject.get(Constant.RETCODE).toString());
136 LOG.info("download CSAR successful." + downloadObject.get(Constant.RETCODE));
138 // unzip csar package to location.
139 JSONObject unzipObject = unzipCSAR(csarfilepath + csarfilename, csarfilepath);
141 if (Integer.valueOf(unzipObject.get(Constant.RETCODE).toString()) != Constant.REST_SUCCESS) {
142 LOG.error("unzip CSAR fail.", unzipObject.get(Constant.RETCODE));
143 resultObj.put(Constant.REASON, unzipObject.get(Constant.REASON).toString());
144 resultObj.put(Constant.RETCODE, unzipObject.get(Constant.RETCODE).toString());
147 LOG.info("unzip CSAR successful.", unzipObject.get(Constant.RETCODE));
149 // upload vnfd to ftps server
150 // JSONObject uploadResJson = uploadCsar(csarTempObj, csarfilepath);
151 // LOG.info("upload Csar result: {}.", uploadResJson);
153 Map<String, String> vnfmMap = new HashMap<>();
154 vnfmMap.put("url", String.format(UrlConstant.REST_VNFMINFO_GET, vnfmid));
155 vnfmMap.put("methodType", Constant.GET);
157 // get VNFM connection info
158 // getVnfmConnInfo(vnfmMap)
159 JSONObject vnfmObject = VnfmUtil.getVnfmById(vnfmid);
160 LOG.info("get Vnfm Connection Info successful.");
162 String vnfmUrl = vnfmObject.getString("url");
163 String userName = vnfmObject.getString(Constant.USERNAME);
164 String password = vnfmObject.getString(Constant.PASSWORD);
166 // build VNFM connection and get token
167 ConnectMgrVnfm mgrVcmm = new ConnectMgrVnfm();
169 JSONObject connObject = new JSONObject();
170 connObject.put("url", vnfmUrl);
171 connObject.put(Constant.USERNAME, userName);
172 connObject.put(Constant.PASSWORD, password);
173 if (Constant.HTTP_OK != mgrVcmm.connect(vnfmObject, Constant.CERTIFICATE)) {
174 LOG.error("get Access Session fail.");
175 resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
176 resultObj.put(Constant.REASON, "connect fail.");
179 LOG.info("get Access Session successful.");
180 String connToken = mgrVcmm.getAccessSession();
183 JSONObject cloudObject = getAllCloud(vnfmUrl, connToken);
186 if (!cloudObject.isEmpty() && cloudObject.get(Constant.RETCODE).equals(HttpStatus.SC_OK)) {
187 LOG.info("get all cloud successful.", cloudObject.get(Constant.RETCODE));
188 vimId = cloudObject.getString("vim_id");
190 LOG.error("get all cloud fail.", cloudObject.get(Constant.RETCODE));
194 // upload VNF package
195 // csarTempObj.put("vim_id", vimId);
196 vnfpkg.put("template", csarTempObj);
197 LOG.info("vnfpkg: " + vnfpkg);
199 JSONObject uploadPkgObject = upload(vnfpkg, vnfmUrl, connToken);
200 LOG.info("uploadPkgObject:" + uploadPkgObject);
201 if (!uploadPkgObject.isEmpty() && uploadPkgObject.get(Constant.RETCODE).equals(HttpStatus.SC_OK)) {
202 LOG.info("upload vnf package info successful.", uploadPkgObject.get(Constant.RETCODE));
203 vnfdid = uploadPkgObject.getString("id");
206 // if(vnfdid == null || "".equals(vnfdid.trim())) {
207 JSONObject vnfdConf = readVnfdIdInfoFromJson();
208 LOG.info("vnfdName:" + vnfdName + ", vnfdConf=" + vnfdConf);
209 if (vnfdConf.containsKey(vnfdName)) {
210 vnfdid = vnfdConf.getString(vnfdName);
213 LOG.info("set vnfdId=" + vnfdid);
216 String vnfdVersion = "";
218 JSONObject vnfdVerObject = getVnfdVersion(vnfmUrl, String.format(UrlConstant.URL_VNFDINFO_GET, vnfdid),
220 LOG.info("vnfdVerObject:" + vnfdVerObject);
221 if (!vnfdVerObject.isEmpty() && vnfdVerObject.get(Constant.RETCODE).equals(HttpStatus.SC_OK)) {
222 LOG.info("get vnfd version successful.", vnfdVerObject.get(Constant.RETCODE));
223 JSONArray verArr = vnfdVerObject.getJSONArray("templates");
224 JSONObject verTmpObj = verArr.getJSONObject(0);
226 vnfdVersion = verTmpObj.getString("vnfdVersion");
228 LOG.error("get vnfd version fail.", vnfdVerObject.get(Constant.RETCODE));
229 return vnfdVerObject;
232 // get vnfd plan info
233 String planName = "";
236 JSONObject vnfdPlanInfo = getVNFDPlanInfo(vnfmUrl, vnfdid, connToken);
237 LOG.info("vnfdPlanInfo:" + vnfdPlanInfo);
238 JSONObject inputsObj = new JSONObject();
239 if (!vnfdPlanInfo.isEmpty() && vnfdPlanInfo.get(Constant.RETCODE).equals(HttpStatus.SC_OK)) {
240 LOG.info("get vnfd plan info successful.", vnfdPlanInfo.get(Constant.RETCODE));
241 JSONObject planTmpObj = vnfdPlanInfo.getJSONObject("template");
242 String templateName = planTmpObj.getString("template_name").trim();
243 JSONArray topoTmpObj = planTmpObj.getJSONArray("topology_template");
245 JSONObject planObj = topoTmpObj.getJSONObject(0);
246 if ("VNFD_vUGW".equals(templateName)) {
247 for (int i = 0; i < topoTmpObj.size(); i++) {
248 String name = topoTmpObj.getJSONObject(i).getString("plan_name").trim();
249 if ("Normal_E9K".equals(name)) {
250 planObj = topoTmpObj.getJSONObject(i);
255 planName = planObj.getString("plan_name");
256 planId = planObj.getString("plan_id");
257 if (planObj.containsKey("inputs")) {
258 JSONArray inputs = planObj.getJSONArray("inputs");
259 for (int i = 0; i < inputs.size(); i++) {
260 JSONObject obj = inputs.getJSONObject(i);
261 obj.put("value", obj.getString("default"));
263 inputsObj.put("inputs", inputs);
264 inputsObj.put("External_network", new JSONArray());
267 LOG.error("get vnfd plan info fail.", vnfdPlanInfo.get(Constant.RETCODE));
272 resultObj.put(Constant.RETCODE, Constant.HTTP_OK);
273 resultObj.put("vnfdId", vnfdid);
274 resultObj.put("vnfdVersion", vnfdVersion);
275 resultObj.put("planName", planName);
276 resultObj.put("planId", planId);
277 if (StringUtils.isNotEmpty(emsUuid)) {
278 resultObj.put("emsUuid", emsUuid);
280 resultObj.put("parameters", inputsObj);
281 LOG.info("resultObj:" + resultObj.toString());
286 private String transferFromCsar(String csarName) {
287 LOG.info("csarName: " + csarName);
288 String tempCsarName = csarName.toUpperCase();
289 if (tempCsarName.contains("CSCF_SI")) {
291 } else if (tempCsarName.contains("CSCF")) {
293 } else if (tempCsarName.contains("MME")) {
295 } else if (tempCsarName.contains("SPGW")) {
297 } else if (tempCsarName.contains("HSS")) {
299 } else if (tempCsarName.contains("SBC")) {
301 } else if (tempCsarName.contains("PCRF")) {
303 } else if (tempCsarName.contains("TAS")) {
309 private JSONObject uploadCsar(JSONObject vnfpkg, String csarfilepath) {
310 LOG.info("vnfpkg: " + vnfpkg + "csarfilepath:" + csarfilepath);
311 JSONObject resJson = new JSONObject();
313 boolean flag = false;
314 FTPSClient ftpClient = new FTPSClient();
316 ftpClient.connect(vnfpkg.getString("ftp_server_ip"), 21);
317 ftpClient.login(vnfpkg.getString("ftp_username"), vnfpkg.getString("ftp_password"));
318 int replyCode = ftpClient.getReplyCode();
319 LOG.info("replyCode: " + replyCode);
320 if (!FTPReply.isPositiveCompletion(replyCode)) {
321 resJson.put("message", "Connect ftps server failed!");
325 ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
326 ftpClient.enterLocalPassiveMode();
327 ftpClient.makeDirectory(vnfpkg.getString(VNFD_FILE_PATH));
328 LOG.info("makeDirectory: " + ftpClient.makeDirectory(vnfpkg.getString(VNFD_FILE_PATH)));
329 ftpClient.changeWorkingDirectory(vnfpkg.getString(VNFD_FILE_PATH));
330 LOG.info("changeWorkingDirectory: " + ftpClient.changeWorkingDirectory(vnfpkg.getString(VNFD_FILE_PATH)));
331 String vnfdPath = csarfilepath + "Artifacts/Deployment/OTHER/";
332 LOG.info("vnfd_file_name: " + vnfdPath + vnfpkg.getString("vnfd_file_name"));
333 try (InputStream inputStream = new FileInputStream(
334 new File(vnfdPath + vnfpkg.getString("vnfd_file_name")))) {
335 flag = ftpClient.storeFile(vnfpkg.getString("vnfd_file_name"), inputStream);
337 resJson.put("message", "upload Csar success!");
339 } catch (Exception e) {
340 LOG.error("Exception: " + e);
344 } catch (Exception e) {
345 LOG.error("Exception: " + e);
347 if (ftpClient.isConnected()) {
349 ftpClient.disconnect();
350 } catch (IOException e) {
351 LOG.error("IOException: " + e);
358 private JSONObject sendRequest(Map<String, String> paramsMap) {
359 JSONObject resultObj = new JSONObject();
360 RestfulResponse rsp = VNFRestfulUtil.getRemoteResponse(paramsMap, "");
362 LOG.error("function=sendRequest, RestfulResponse is null");
363 resultObj.put(Constant.REASON, "RestfulResponse is null.");
364 resultObj.put(Constant.RETCODE, Constant.REST_FAIL);
367 String resultCreate = rsp.getResponseContent();
369 if (rsp.getStatus() == Constant.HTTP_OK) {
370 LOG.warn("function=sendRequest, msg= status={}, result={}.", rsp.getStatus(), resultCreate);
371 resultObj = JSONObject.fromObject(resultCreate);
372 resultObj.put(Constant.RETCODE, Constant.HTTP_OK);
375 LOG.error("function=sendRequest, msg=ESR return fail,status={}, result={}.", rsp.getStatus(), resultCreate);
376 resultObj.put(Constant.REASON, "ESR return fail.");
378 resultObj.put(Constant.RETCODE, Constant.REST_FAIL);
383 public JSONObject getVnfmCsarInfo(String csarid) {
384 JSONObject resultObj = new JSONObject();
386 if (null == csarid || "".equals(csarid)) {
387 resultObj.put(Constant.REASON, "csarid is null.");
388 resultObj.put(Constant.RETCODE, Constant.REST_FAIL);
392 Map<String, String> paramsMap = new HashMap<String, String>();
394 paramsMap.put("url", String.format(UrlConstant.REST_CSARINFO_GET, csarid));
395 paramsMap.put("methodType", Constant.GET);
397 return this.sendRequest(paramsMap);
401 public JSONObject downloadCsar(String url, String filePath) {
402 JSONObject resultObj = new JSONObject();
404 if (url == null || "".equals(url)) {
405 resultObj.put(Constant.REASON, "url is null.");
406 resultObj.put(Constant.RETCODE, Constant.REST_FAIL);
409 if (filePath == null || "".equals(filePath)) {
410 resultObj.put(Constant.REASON, "downloadUrl filePath is null.");
411 resultObj.put(Constant.RETCODE, Constant.REST_FAIL);
415 String status = DownloadCsarManager.download(url, filePath);
417 if (Constant.DOWNLOADCSAR_SUCCESS.equals(status)) {
418 resultObj.put(Constant.REASON, "download csar file successfully.");
419 resultObj.put(Constant.RETCODE, Constant.REST_SUCCESS);
421 resultObj.put(Constant.REASON, "download csar file failed.");
422 resultObj.put(Constant.RETCODE, Constant.REST_FAIL);
428 public JSONObject getAllCloud(String url, String conntoken) {
429 JSONObject resultObj = new JSONObject();
430 JSONArray resArray = new JSONArray();
432 if (url == null || url.equals("")) {
433 url = "http://" + Constant.LOCAL_HOST + ":31943";
437 HttpMethod httpMethodCloud = null;
439 httpMethodCloud = new HttpRequests.Builder(Constant.CERTIFICATE)
440 .setUrl(url.trim(), UrlConstant.URL_ALLCLOUD_NEW_GET)
441 .addHeader(Constant.HEADER_AUTH_TOKEN, conntoken).setParams("").get().execute();
443 int statusCode = httpMethodCloud.getStatusCode();
445 String result = httpMethodCloud.getResponseBodyAsString();
447 if (statusCode == HttpStatus.SC_OK) {
448 JSONObject vimInfo = JSONObject.fromObject(result);
449 resArray = vimInfo.getJSONArray("vim_info");
450 resultObj = resArray.getJSONObject(0);
451 resultObj.put(Constant.RETCODE, statusCode);
453 LOG.error("uploadVNFPackage get allcloud failed, code:" + statusCode + " re:" + result);
454 resultObj.put(Constant.RETCODE, statusCode);
455 resultObj.put(Constant.REASON, "get allcloud failed. code:" + statusCode + " re:" + result);
458 } catch (JSONException e) {
459 LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage get allcloud JSONException e={}.", e);
460 resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
461 resultObj.put(Constant.REASON, "get allcloud failed and JSONException." + e.getMessage());
463 } catch (VnfmException e) {
464 LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage get allcloud VnfmException e={}.", e);
465 resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
466 resultObj.put(Constant.REASON, "get allcloud failed and VnfmException." + e.getMessage());
468 } catch (IOException e) {
469 LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage get allcloud IOException e={}.", e);
470 resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
471 resultObj.put(Constant.REASON, "get allcloud failed and IOException." + e.getMessage());
478 * Upload vnfpackage<br>
486 public JSONObject upload(JSONObject vnfpackage, String vnfmurl, String conntoken) {
487 JSONObject resultObj = new JSONObject();
488 HttpMethod httpMethodVnf = null;
491 httpMethodVnf = new HttpRequests.Builder(Constant.CERTIFICATE)
492 .setUrl(vnfmurl.trim(), UrlConstant.URL_VNFPACKAGE_POST).setParams(vnfpackage.toString())
493 .addHeader(Constant.HEADER_AUTH_TOKEN, conntoken).post().execute();
495 int statusCodeUp = httpMethodVnf.getStatusCode();
497 String resultUp = httpMethodVnf.getResponseBodyAsString();
499 if (statusCodeUp == HttpStatus.SC_CREATED || statusCodeUp == HttpStatus.SC_OK) {
500 LOG.info("uploadVNFPackage upload VNF package successful, code:" + statusCodeUp + " re:" + resultUp);
501 resultObj = JSONObject.fromObject(resultUp);
502 resultObj.put(Constant.RETCODE, statusCodeUp);
504 LOG.error("uploadVNFPackage upload VNF package failed, code:" + statusCodeUp + " re:" + resultUp);
505 resultObj.put(Constant.RETCODE, statusCodeUp);
506 resultObj.put("data", "upload VNF package failed, code:" + statusCodeUp + " re:" + resultUp);
509 } catch (JSONException e) {
510 LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage upload VNF package JSONException e={}.", e);
511 resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
512 resultObj.put(Constant.REASON, "upload VNF package failed and JSONException." + e.getMessage());
514 } catch (VnfmException e) {
515 LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage upload VNF package VnfmException e={}.", e);
516 resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
517 resultObj.put(Constant.REASON, "upload VNF package failed and VnfmException." + e.getMessage());
519 } catch (IOException e) {
520 LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage upload VNF package IOException e={}.", e);
521 resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
522 resultObj.put(Constant.REASON, "upload VNF package failed and IOException." + e.getMessage());
529 * Find vnfd version.<br>
536 public JSONObject getVnfdVersion(String prefixUrl, String serviceUrl, String conntoken) {
537 JSONObject resultObj = new JSONObject();
538 HttpMethod httpMethodVnfd = null;
540 httpMethodVnfd = new HttpRequests.Builder(Constant.CERTIFICATE).setUrl(prefixUrl.trim(), serviceUrl)
541 .setParams("").addHeader(Constant.HEADER_AUTH_TOKEN, conntoken).get().execute();
543 int statusCodeVnfd = httpMethodVnfd.getStatusCode();
545 String resultVnfd = httpMethodVnfd.getResponseBodyAsString();
546 LOG.info("getVnfdVersion result:" + resultVnfd);
547 if (statusCodeVnfd == HttpStatus.SC_OK) {
548 resultObj = JSONObject.fromObject(resultVnfd);
549 resultObj.put(Constant.RETCODE, statusCodeVnfd);
551 LOG.error("uploadVNFPackage vnfd version failed, code:" + statusCodeVnfd + " re:" + resultVnfd);
552 resultObj.put(Constant.RETCODE, statusCodeVnfd);
553 resultObj.put("data", "get vnfd version failed, code:" + statusCodeVnfd + " re:" + resultVnfd);
556 } catch (JSONException e) {
557 LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage get vnfd version JSONException e={}.", e);
558 resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
559 resultObj.put(Constant.REASON, "get vnfd version failed and JSONException." + e.getMessage());
561 } catch (VnfmException e) {
562 LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage get vnfd version VnfmException e={}.", e);
563 resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
564 resultObj.put(Constant.REASON, "get vnfd version failed and VnfmException." + e.getMessage());
566 } catch (IOException e) {
567 LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage get vnfd version IOException e={}.", e);
568 resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
569 resultObj.put(Constant.REASON, "get vnfd version failed and IOException." + e.getMessage());
576 * Find VNFM connection information.<br>
582 public JSONObject getVnfmConnInfo(Map<String, String> paramsMap) {
583 return this.sendRequest(paramsMap);
587 public JSONObject getVNFDPlanInfo(String url, String vnfdid, String conntoken) {
588 JSONObject resultObj = new JSONObject();
590 HttpMethod httpMethodPlan = null;
592 httpMethodPlan = new HttpRequests.Builder(Constant.CERTIFICATE)
593 .setUrl(url.trim(), String.format(UrlConstant.URL_VNFDPLANINFO_GET, vnfdid)).setParams("")
594 .addHeader(Constant.HEADER_AUTH_TOKEN, conntoken).get().execute();
596 int statusCode = httpMethodPlan.getStatusCode();
598 String result = httpMethodPlan.getResponseBodyAsString();
599 LOG.info("getVNFDPlanInfo result=" + result);
600 if (statusCode == HttpStatus.SC_OK) {
601 resultObj = JSONObject.fromObject(result);
602 resultObj.put(Constant.RETCODE, statusCode);
604 LOG.error("uploadVNFPackage get VNFDPlanInfo failed, code:" + statusCode + " re:" + result);
605 resultObj.put(Constant.RETCODE, statusCode);
606 resultObj.put(Constant.REASON, "get VNFDPlanInfo failed. code:" + statusCode + " re:" + result);
609 } catch (JSONException e) {
610 LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage get VNFDPlanInfo JSONException e={}.", e);
611 resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
612 resultObj.put(Constant.REASON, "get VNFDPlanInfo failed and JSONException." + e.getMessage());
614 } catch (VnfmException e) {
615 LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage get VNFDPlanInfo VnfmException e={}.", e);
616 resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
617 resultObj.put(Constant.REASON, "get VNFDPlanInfo failed and VnfmException." + e.getMessage());
619 } catch (IOException e) {
620 LOG.error("function=uploadVNFPackage, msg=uploadVNFPackage get VNFDPlanInfo IOException e={}.", e);
621 resultObj.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
622 resultObj.put(Constant.REASON, "get VNFDPlanInfo failed and IOException." + e.getMessage());
629 * Get VNF package information.<br>
632 * @throws IOException
635 public static String readVfnPkgInfoFromJson() throws IOException {
636 String fileContent = "";
638 String fileName = SystemEnvVariablesFactory.getInstance().getAppRoot()
639 + System.getProperty(Constant.FILE_SEPARATOR) + "etc" + System.getProperty(Constant.FILE_SEPARATOR)
640 + "vnfpkginfo" + System.getProperty(Constant.FILE_SEPARATOR) + Constant.VNFPKGINFO;
642 try (InputStream ins = new FileInputStream(fileName)) {
643 try (BufferedInputStream bins = new BufferedInputStream(ins)) {
644 byte[] contentByte = new byte[ins.available()];
645 int num = bins.read(contentByte);
648 fileContent = new String(contentByte);
651 } catch (FileNotFoundException e) {
652 LOG.error(fileName + "is not found!", e);
658 private static JSONObject readVnfdIdInfoFromJson() {
659 JSONObject jsonObject = new JSONObject();
661 String fileContent = "";
663 String fileName = SystemEnvVariablesFactory.getInstance().getAppRoot()
664 + System.getProperty(Constant.FILE_SEPARATOR) + "etc" + System.getProperty(Constant.FILE_SEPARATOR)
665 + "vnfpkginfo" + System.getProperty(Constant.FILE_SEPARATOR) + "vnfd_ids.json";
667 try (InputStream ins = new FileInputStream(fileName)) {
668 try (BufferedInputStream bins = new BufferedInputStream(ins)) {
669 byte[] contentByte = new byte[ins.available()];
670 int num = bins.read(contentByte);
673 fileContent = new String(contentByte);
675 if (fileContent != null) {
676 jsonObject = JSONObject.fromObject(fileContent).getJSONObject("vnfdIds");
679 } catch (Exception e) {
680 LOG.error(fileName + " read error!", e);
688 * @param fileName filePath
692 public JSONObject unzipCSAR(String fileName, String filePath) {
693 LOG.info("fileName: " + fileName + ", filePath: " + filePath);
694 JSONObject resultObj = new JSONObject();
696 if (fileName == null || "".equals(fileName)) {
697 resultObj.put(Constant.REASON, "fileName is null.");
698 resultObj.put(Constant.RETCODE, Constant.REST_FAIL);
701 if (filePath == null || "".equals(filePath)) {
702 resultObj.put(Constant.REASON, "unzipCSAR filePath is null.");
703 resultObj.put(Constant.RETCODE, Constant.REST_FAIL);
707 int status = DownloadCsarManager.unzipCSAR(fileName, filePath);
709 if (Constant.UNZIP_SUCCESS == status) {
710 resultObj.put(Constant.REASON, "unzip csar file successfully.");
711 resultObj.put(Constant.RETCODE, Constant.REST_SUCCESS);
713 resultObj.put(Constant.REASON, "unzip csar file failed.");
714 resultObj.put(Constant.RETCODE, Constant.REST_FAIL);