Merge "Fix CVE-2018-1271, CVE-2018-10237" 2.0.0-ONAP beijing 2.0.0-ONAP v1.1.0
authorYan Yang <yangyanyj@chinamobile.com>
Fri, 1 Jun 2018 05:35:07 +0000 (05:35 +0000)
committerGerrit Code Review <gerrit@onap.org>
Fri, 1 Jun 2018 05:35:07 +0000 (05:35 +0000)
huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/csm/vnf/VnfMgrVnfm.java
huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/process/VnfMgr.java
huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/rest/VnfResourceRoa.java
huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/rest/VnfRoa.java
huawei/vnfmadapter/VnfmadapterService/service/src/main/resources/spring/Vnfmadapter/services.xml

index 42d5b87..92b28f3 100644 (file)
@@ -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);
 
index 7b5c1ba..cf0e3b3 100644 (file)
@@ -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();
index c16f073..fa1e4c3 100644 (file)
@@ -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);
index 15786b6..e56eef1 100644 (file)
@@ -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);
 
index f71aa51..312365d 100644 (file)
@@ -41,7 +41,7 @@
     <import resource="classpath:META-INF/cxf/cxf.xml"/>
     <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
 
-    <context:property-placeholder location="classpath:jdbc.properties" ignore-unresolvable="true"/>
+    <ctx:property-placeholder location="classpath:config.properties" ignore-unresolvable="true"/>
     
     <bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/>