package org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.rest;
+import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
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;
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;
* @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 {
/**
* 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();
* @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();
* @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();
* @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) 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();
}
restJson.remove(Constant.RETCODE);
+ LOG.info("function=getVnf, restJson: {}", restJson);
return restJson.toString();
}
+ /**
+ * <br>
+ *
+ * @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
* <br/>
* @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 {
+ @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);
+ }
+
+ /**
+ * <br>
+ * 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)) {
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);
}
/**
* <br>
- *
+ *
* @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);
}
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"));
+ 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)));
+ 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();
}
+
+ /**
+ * <br>
+ * 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");
+ }
+
+ /**
+ * <br>
+ * 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");
+ }
+
+ /**
+ * <br>
+ * 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);
+ }
+ }
}