X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=huawei%2Fvnfmadapter%2FVnfmadapterService%2Fservice%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fvfc%2Fnfvo%2Fvnfm%2Fsvnfm%2Fvnfmadapter%2Fservice%2Frest%2FVnfRoa.java;h=e56eef1f15b861233b98da0c4b0a4f72c15c0770;hb=503e8f5d3df25f06f185e5cc98cbb6cd1b72d177;hp=b7ad0b03036d415761e12e1eddc3d13bd0ae4c79;hpb=6ca80491b00d3f56388cf00a4d4df40beb316d9c;p=vfc%2Fnfvo%2Fdriver%2Fvnfm%2Fsvnfm.git 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 b7ad0b03..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 @@ -16,6 +16,7 @@ package org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.rest; +import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -24,7 +25,6 @@ import javax.servlet.http.HttpServletResponse; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.POST; -import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; @@ -35,7 +35,7 @@ import javax.ws.rs.core.MediaType; import org.apache.commons.collections.map.UnmodifiableMap; import org.apache.commons.lang3.StringUtils; import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.VnfmJsonUtil; -import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.restclient.ServiceException; +import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.VnfmUtil; import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.constant.Constant; import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.process.VnfMgr; import org.slf4j.Logger; @@ -51,7 +51,7 @@ import net.sf.json.JSONObject; * @version VFC 1.0 Aug 24, 2016 */ @SuppressWarnings("unchecked") -@Path("/api/hwvnfm/v1") +@Path("/api/huaweivnfmdriver/v1") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public class VnfRoa { @@ -60,9 +60,9 @@ public class VnfRoa { private VnfMgr vnfMgr; - private static Map PROGRESSITEM; + private static Map progressItem; - private static Map JOBSTATUSITEM; + private static Map jobstatusItem; static { Map map = new HashMap<>(); @@ -70,14 +70,14 @@ public class VnfRoa { map.put("Active", "100"); map.put("Stopped", "50"); map.put("Error", "100"); - PROGRESSITEM = UnmodifiableMap.decorate(map); + progressItem = UnmodifiableMap.decorate(map); map = new HashMap<>(); map.put("Building", "processing"); map.put("Active", "finished"); map.put("Stopped", "processing"); map.put("Error", "error"); - JOBSTATUSITEM = UnmodifiableMap.decorate(map); + jobstatusItem = UnmodifiableMap.decorate(map); } public void setVnfMgr(VnfMgr vnfMgr) { @@ -86,34 +86,32 @@ public class VnfRoa { /** * Scale VNF - * + * + * @param vnfmId + * @param vnfInstanceId + * @param resp * @param context - * * { + * { * "vnfInstanceId":"5", * "type":"SCALE_OUT", * "aspectId":"101", * "numberOfSteps":"1", * "additionalParam":{} * } - * @param resp - * @param vnfmId * @return * { * "jobId":"1" * } - * @throws ServiceException */ @POST @Path("/{vnfmId}/vnfs/{vnfInstanceId}/scale") public String scaleVnf(@Context HttpServletRequest context, @Context HttpServletResponse resp, - @PathParam("vnfmId") String vnfmId, @PathParam("vnfInstanceId") String vnfInstanceId) - throws ServiceException { + @PathParam("vnfmId") String vnfmId, @PathParam("vnfInstanceId") String vnfInstanceId) { JSONObject jsonObject = VnfmJsonUtil.getJsonFromContexts(context); LOG.info("function=scaleVNF, msg=enter to scale a vnf. request body:" + jsonObject); JSONObject result = new JSONObject(); - String msg = ""; if(null == jsonObject) { - msg = "the parameters do not meet the requirements,please check it!"; + String msg = "the parameters do not meet the requirements,please check it!"; LOG.error("function=scalVnf," + msg); resp.setStatus(Constant.HTTP_NOT_ACCEPTABLE); result.put("msg", msg); @@ -138,13 +136,12 @@ public class VnfRoa { * @param resp * @param vnfmId * @return - * @throws ServiceException * @since VFC 1.0 */ @POST @Path("/{vnfmId}/vnfs") public String addVnf(@Context HttpServletRequest context, @Context HttpServletResponse resp, - @PathParam("vnfmId") String vnfmId) throws ServiceException { + @PathParam("vnfmId") String vnfmId) { LOG.warn("function=addVnf, msg=enter to add a vnf"); JSONObject subJsonObject = VnfmJsonUtil.getJsonFromContexts(context); JSONObject restJson = new JSONObject(); @@ -175,14 +172,12 @@ public class VnfRoa { * @param vnfInstanceId * @param context * @return - * @throws ServiceException * @since VFC 1.0 */ @POST @Path("/{vnfmId}/vnfs/{vnfInstanceId}/terminate") public String delVnf(@PathParam("vnfmId") String vnfmId, @Context HttpServletResponse resp, - @PathParam("vnfInstanceId") String vnfInstanceId, @Context HttpServletRequest context) - throws ServiceException { + @PathParam("vnfInstanceId") String vnfInstanceId, @Context HttpServletRequest context) { LOG.warn("function=delVnf, msg=enter to delete a vnf: vnfInstanceId: {}, vnfmId: {}", vnfInstanceId, vnfmId); JSONObject vnfObject = VnfmJsonUtil.getJsonFromContexts(context); JSONObject restJson = new JSONObject(); @@ -209,16 +204,13 @@ public class VnfRoa { * @param vnfmId * @param resp * @param vnfInstanceId - * @param context * @return - * @throws ServiceException * @since VFC 1.0 */ @GET @Path("/{vnfmId}/vnfs/{vnfInstanceId}") public String getVnf(@PathParam("vnfmId") String vnfmId, @Context HttpServletResponse resp, - @PathParam("vnfInstanceId") String vnfInstanceId, @Context HttpServletRequest context) - throws ServiceException { + @PathParam("vnfInstanceId") String vnfInstanceId) throws IOException { LOG.warn("function=getVnf, msg=enter to get a vnf: vnfInstanceId: {}, vnfmId: {}", vnfInstanceId, vnfmId); JSONObject restJson = new JSONObject(); @@ -235,9 +227,25 @@ public class VnfRoa { } restJson.remove(Constant.RETCODE); + LOG.info("function=getVnf, restJson: {}", restJson); return restJson.toString(); } + /** + *
+ * + * @param vnfmId + * @param resp + * @return + * @since VFC 1.0 + */ + @GET + @Path("/{vnfmId}") + public String getVnfmById(@PathParam("vnfmId") String vnfmId, @Context HttpServletResponse resp) { + LOG.warn("function=getVnfmById, vnfmId: {}", vnfmId); + return VnfmUtil.getVnfmById(vnfmId).toString(); + } + /** * Provide function for get job *
@@ -247,14 +255,27 @@ public class VnfRoa { * @param resp * @param responseId * @return - * @throws ServiceException * @since VFC 1.0 */ @GET - @Path("/{vnfmId}/jobs/{jobId}") + @Path("/{vnfmId}/jobs_old/{jobId}") public String getJob(@PathParam("jobId") String jobId, @PathParam("vnfmId") String vnfmId, - @Context HttpServletResponse resp, @QueryParam("@responseId") String responseId) throws ServiceException { - LOG.warn("function=getJob, msg=enter to get a job: jobId: {}", jobId); + @Context HttpServletResponse resp, @QueryParam("@responseId") String responseId) { + LOG.warn("function=getJob, msg=enter to get a job: jobId: {}, responseId: {}", jobId, responseId); + return getJobProcess(jobId, vnfmId, resp, jobId); + } + + /** + *
+ * common getJob method + * + * @param jobId + * @param vnfmId + * @param resp + * @return + * @since VFC 1.0 + */ + private String getJobProcess(String jobId, String vnfmId, HttpServletResponse resp, String orgJobId) { JSONObject restJson = new JSONObject(); if(StringUtils.isEmpty(jobId) || StringUtils.isEmpty(vnfmId)) { @@ -264,38 +285,36 @@ public class VnfRoa { restJson = vnfMgr.getJob(jobId, vnfmId); if(restJson.getInt(Constant.RETCODE) == Constant.REST_FAIL) { - LOG.error("function=getJob, msg=getJob fail"); + LOG.error("function=getJobProcess, msg=getJob fail"); resp.setStatus(Constant.HTTP_INNERERROR); return restJson.toString(); } - return getJobBody(restJson); + return getJobBody(restJson, orgJobId); } /** *
- * + * * @param context * { - * �action�: �vmReset�, - * �affectedvm�: { - * �vmid�: �804cca71 - 9ae9 - 4511 - 8e30 - d1387718caff�, - * �vduid�: �vdu_100�, - * �vmname�: �ZTE_SSS_111_PP_2_L� + * "action": "vmReset", + * "affectedvm": { + * "vmid": "804cca71 - 9ae9 - 4511 - 8e30 - d1387718caff", + * "vduid": "vdu_100", + * "vmname": "SBC_111_PP_2_L" * } * } * @param resp * @param vnfmId * @param vnfInstanceId * @return - * @throws ServiceException * @since VFC 1.0 */ - @PUT + @POST @Path("/{vnfmId}/vnfs/{vnfInstanceId}/heal") public String healVnf(@Context HttpServletRequest context, @Context HttpServletResponse resp, - @PathParam("vnfmId") String vnfmId, @PathParam("vnfInstanceId") String vnfInstanceId) - throws ServiceException { + @PathParam("vnfmId") String vnfmId, @PathParam("vnfInstanceId") String vnfInstanceId) { LOG.warn("function=healVnf, msg=enter to heal a vnf: vnfInstanceId: {}, vnfmId: {}", vnfInstanceId, vnfmId); JSONObject restJson = new JSONObject(); JSONObject jsonObject = VnfmJsonUtil.getJsonFromContexts(context); @@ -314,20 +333,120 @@ public class VnfRoa { } restJson.remove(Constant.RETCODE); - restJson.put("jobId", vnfInstanceId + "_put"); + //restJson.put("jobId", vnfInstanceId + "_post"); + restJson.put("jobId", vnfInstanceId + ":heal"); return restJson.toString(); } - private String getJobBody(JSONObject restJson) { + 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(); JSONObject jobInfoJson = new JSONObject(); JSONObject retJson = restJson.getJSONArray("data").getJSONObject(0); - jobInfoJson.put("jobId", retJson.getString("id")); - responseJson.put("progress", PROGRESSITEM.get(retJson.getString(Constant.STATUS))); - responseJson.put("status", JOBSTATUSITEM.get(retJson.getString(Constant.STATUS))); + jobInfoJson.put("jobId", jobId); + responseJson.put("progress", progressItem.get(retJson.getString(Constant.STATUS))); + responseJson.put("status", jobstatusItem.get(retJson.getString(Constant.STATUS))); responseJson.put("errorCode", "null"); - responseJson.put("responseId", PROGRESSITEM.get(retJson.getString(Constant.STATUS))); + responseJson.put("responseId", progressItem.get(retJson.getString(Constant.STATUS))); + if(retJson.getString(Constant.STATUS) == null || retJson.getString(Constant.STATUS) == "null") { + 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(); } + + /** + *
+ * Query vms info from vnfm + * + * @param vnfmId + * @param resp + * @return + */ + @GET + @Path("/{vnfmId}/vms") + public String getVms(@PathParam("vnfmId") String vnfmId, @Context HttpServletResponse resp) { + LOG.info("function=getVms, msg=enter to get vms: vnfmId: {}", vnfmId); + JSONObject restJson = vnfMgr.getVmsFromVnfm(vnfmId, null); + LOG.info("function=getVms, restJson: {}", restJson); + return restJson.getString("data"); + } + + /** + *
+ * Query vms info by vnfId from vnfm + * + * @param vnfmId + * @param vnfInstanceId + * @param resp + * @return + */ + @GET + @Path("/{vnfmId}/{vnfInstanceId}/vms") + public String getVmsByVnfId(@PathParam("vnfmId") String vnfmId, @PathParam("vnfInstanceId") String vnfInstanceId, + @Context HttpServletResponse resp) { + LOG.info("function=getVmsByVnfId, msg=enter to get vms: vnfmId: {}", vnfmId); + JSONObject restJson = vnfMgr.getVmsFromVnfm(vnfmId, vnfInstanceId); + LOG.info("function=getVmsByVnfId, restJson: {}", restJson); + return restJson.getString("data"); + } + + /** + *
+ * Query job status from vnfm version 18.1 + * + * @param jobId + * @param vnfmId + * @param responseId + * @return + * @since VFC 1.0 + */ + @GET + @Path("/{vnfmId}/jobs/{jobId}") + public String getJobFromVnfm(@PathParam("jobId") String jobId, @PathParam("vnfmId") String vnfmId, + @Context HttpServletResponse resp, @QueryParam("@responseId") String responseId) { + LOG.warn("function=getJobFromVnfm, msg=enter to get a job: jobId: {}, responseId: {}", jobId, responseId); + String[] temps = jobId.split(":"); + String tmpJobId = temps[0]; + String flag = ""; + if(temps.length > 1) { + flag = temps[1]; + } + LOG.warn("function=getJobFromVnfm, tmpJobId: {}, flag: {}", tmpJobId, flag); + + 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); + + if(restJson.getInt(Constant.RETCODE) == Constant.REST_FAIL) { + LOG.error("function=getJobFromVnfm, msg=getJobFromVnfm fail"); + resp.setStatus(Constant.HTTP_INNERERROR); + return restJson.toString(); + } + + return vnfMgr.transferToLcm(restJson); + } + } }