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);