From: Yan Yang Date: Fri, 1 Jun 2018 05:35:07 +0000 (+0000) Subject: Merge "Fix CVE-2018-1271, CVE-2018-10237" X-Git-Tag: v1.1.0^0 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=503e8f5d3df25f06f185e5cc98cbb6cd1b72d177;hp=5c24531a0d7b1d9d1ea2c84de302d64299450d38;p=vfc%2Fnfvo%2Fdriver%2Fvnfm%2Fsvnfm.git Merge "Fix CVE-2018-1271, CVE-2018-10237" --- diff --git a/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/csm/vnf/VnfMgrVnfm.java b/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/csm/vnf/VnfMgrVnfm.java index 42d5b875..92b28f36 100644 --- a/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/csm/vnf/VnfMgrVnfm.java +++ b/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/csm/vnf/VnfMgrVnfm.java @@ -350,13 +350,13 @@ public class VnfMgrVnfm implements InterfaceVnfMgr { String action = jsonObject.getString("action"); JSONObject affectedVm = jsonObject.getJSONObject("affectedvm"); - String vmId = affectedVm.getString("vmid"); + String vmId = getNativeVmId(affectedVm.getString("vmid"), vnfmObjcet, vnfInstanceId); String path = String.format(ParamConstants.HEAL_VNF, vmId); JSONObject subJsonObject = new JSONObject(); subJsonObject.put("type", "hard"); subJsonObject.put("boot_mode", ""); - if("vmReset".equals(action)) { + if("vmReset".equalsIgnoreCase(action)) { subJsonObject.put("action", "reset"); } LOG.info("healVnf subJsonObject :" + subJsonObject); @@ -374,6 +374,22 @@ public class VnfMgrVnfm implements InterfaceVnfMgr { return restJson; } + private String getNativeVmId(String vimVmId, JSONObject vnfmObjcet, String vnfInstanceId) { + JSONObject queryVms = ResultRequestUtil.call(vnfmObjcet, + String.format(ParamConstants.VNF_GET_VMINFO, vnfInstanceId), Constant.GET, null, Constant.CERTIFICATE); + LOG.info("function=getNativeVmId, msg=query vms result=" + queryVms); + JSONArray vms = queryVms.getJSONObject("data").getJSONArray("vms"); + for(int i = 0; i < vms.size(); i++) { + JSONObject obj = vms.getJSONObject(i); + String tmpVimVmId = obj.getString("backend_id"); + if(vimVmId.equalsIgnoreCase(tmpVimVmId)) { + return obj.getString("id"); + } + } + LOG.error("function=getNativeVmId, msg=get native vmId failed."); + return ""; + } + public JSONObject getJobFromVnfm(JSONObject vnfmObjcet, String jobId) { LOG.warn("function=getJobFromVnfm, jobId: {}", jobId); diff --git a/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/process/VnfMgr.java b/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/process/VnfMgr.java index 7b5c1baf..cf0e3b39 100644 --- a/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/process/VnfMgr.java +++ b/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/process/VnfMgr.java @@ -359,18 +359,22 @@ public class VnfMgr { JSONObject jobInfoJson = new JSONObject(); JSONObject jobInfo = restJson.getJSONObject("data").getJSONObject("job_info"); jobInfoJson.put("jobId", jobInfo.getString("job_id") + ":job"); - responseJson.put("progress", jobInfo.getString("task_progress_rate")); + String taskProgress = jobInfo.getString("task_progress_rate"); + responseJson.put("progress", taskProgress); + int responseId = Integer.parseInt(taskProgress); String taskStatus = jobInfo.getString("task_status"); if(taskStatus.equalsIgnoreCase("Successfully") || taskStatus.equalsIgnoreCase("finished")) { responseJson.put("status", "finished"); + responseId++; } else if(taskStatus.equalsIgnoreCase("Failed")) { responseJson.put("status", "error"); + responseId++; } else { responseJson.put("status", "processing"); } responseJson.put("errorCode", jobInfo.getString("error_code")); - responseJson.put("responseId", jobInfo.getString("task_progress_rate")); + responseJson.put("responseId", String.valueOf(responseId)); jobInfoJson.put("responsedescriptor", responseJson); LOG.warn("function=getJobBody, jobInfoJson: {}", jobInfoJson); return jobInfoJson.toString(); diff --git a/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/rest/VnfResourceRoa.java b/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/rest/VnfResourceRoa.java index c16f0730..fa1e4c39 100644 --- a/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/rest/VnfResourceRoa.java +++ b/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/rest/VnfResourceRoa.java @@ -121,17 +121,27 @@ public class VnfResourceRoa { JSONArray vmList = dataObject.getJSONArray("vm_list"); String changeType = ""; String operation = ""; - if(1 == dataObject.getInt("event_type")) { + int eventType = dataObject.getInt("event_type"); + if(1 == eventType) { changeType = "added"; operation = "Instantiate"; - } else { + } else if(4 == eventType) { changeType = "removed"; operation = "Terminal"; + } else if(3 == eventType) { + changeType = "added"; + operation = "Scaleout"; + } else if(2 == eventType) { + changeType = "removed"; + operation = "Scalein"; } String vnfInstanceId = dataObject.getString("vnf_id"); for(int i = 0; i < vmList.size(); i++) { JSONObject vm = vmList.getJSONObject(i); LOG.info("function=callLcmNotify, vm: {}", vm); + if((2 == eventType) && ("Active".equalsIgnoreCase(vm.getString("status")))) { + continue; + } JSONObject affectedVm = new JSONObject(); String vimVimId = vm.getString("vim_vm_id"); affectedVm.put("vnfcInstanceId", vimVimId); @@ -143,6 +153,10 @@ public class VnfResourceRoa { LOG.info("function=callLcmNotify, affectedVm: {}", affectedVm); affectedVnfc.add(affectedVm); } + if(affectedVnfc.isEmpty()) { + LOG.warn("function=callLcmNotify, affectedVnfc is empty."); + return; + } JSONObject notification = new JSONObject(); notification.put("status", dataObject.getString("vnf_status")); notification.put("vnfInstanceId", vnfInstanceId); diff --git a/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/rest/VnfRoa.java b/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/rest/VnfRoa.java index 15786b66..e56eef1f 100644 --- a/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/rest/VnfRoa.java +++ b/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/rest/VnfRoa.java @@ -302,7 +302,7 @@ public class VnfRoa { * "affectedvm": { * "vmid": "804cca71 - 9ae9 - 4511 - 8e30 - d1387718caff", * "vduid": "vdu_100", - * "vmname": "ZTE_SSS_111_PP_2_L" + * "vmname": "SBC_111_PP_2_L" * } * } * @param resp @@ -333,10 +333,26 @@ public class VnfRoa { } restJson.remove(Constant.RETCODE); - restJson.put("jobId", vnfInstanceId + "_post"); + //restJson.put("jobId", vnfInstanceId + "_post"); + restJson.put("jobId", vnfInstanceId + ":heal"); return restJson.toString(); } + private String getHealJobBody(String jobId) { + LOG.warn("function=getHealJobBody"); + JSONObject responseJson = new JSONObject(); + JSONObject jobInfoJson = new JSONObject(); + jobInfoJson.put("jobId", jobId); + responseJson.put("progress", "100"); + responseJson.put("status", "finished"); + responseJson.put("errorCode", "null"); + responseJson.put("responseId", "100"); + jobInfoJson.put("responsedescriptor", responseJson); + + LOG.warn("function=getJobBody, jobInfoJson: {}", jobInfoJson); + return jobInfoJson.toString(); + } + private String getJobBody(JSONObject restJson, String jobId) { LOG.warn("function=getJobBody, restJson: {}", restJson); JSONObject responseJson = new JSONObject(); @@ -419,6 +435,8 @@ public class VnfRoa { if(flag.equalsIgnoreCase("no")) { return getJobProcess(tmpJobId, vnfmId, resp, jobId); + } else if (flag.equalsIgnoreCase("heal")){ + return getHealJobBody(jobId); } else { JSONObject restJson = vnfMgr.getJobFromVnfm(tmpJobId, vnfmId); diff --git a/huawei/vnfmadapter/VnfmadapterService/service/src/main/resources/spring/Vnfmadapter/services.xml b/huawei/vnfmadapter/VnfmadapterService/service/src/main/resources/spring/Vnfmadapter/services.xml index f71aa51a..312365d1 100644 --- a/huawei/vnfmadapter/VnfmadapterService/service/src/main/resources/spring/Vnfmadapter/services.xml +++ b/huawei/vnfmadapter/VnfmadapterService/service/src/main/resources/spring/Vnfmadapter/services.xml @@ -41,7 +41,7 @@ - +