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.VnfmUtil;
+import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.restclient.ServiceException;
import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.constant.Constant;
import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.process.VnfMgr;
-import org.openo.baseservice.remoteservice.exception.ServiceException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
* <br/>
*
* @author
- * @version NFVO 0.5 Aug 24, 2016
+ * @version VFC 1.0 Aug 24, 2016
*/
@SuppressWarnings("unchecked")
-@Path("/openoapi/hwvnfm/v1")
+@Path("/api/huaweivnfmdriver/v1")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class VnfRoa {
private VnfMgr vnfMgr;
- private static Map<String, String> PROGRESSITEM;
+ private static Map<String, String> progressItem;
- private static Map<String, String> JOBSTATUSITEM;
+ private static Map<String, String> jobstatusItem;
static {
Map<String, String> map = new HashMap<>();
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) {
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);
* @param vnfmId
* @return
* @throws ServiceException
- * @since NFVO 0.5
+ * @since VFC 1.0
*/
@POST
@Path("/{vnfmId}/vnfs")
* @param context
* @return
* @throws ServiceException
- * @since NFVO 0.5
+ * @since VFC 1.0
*/
@POST
@Path("/{vnfmId}/vnfs/{vnfInstanceId}/terminate")
* @param context
* @return
* @throws ServiceException
- * @since NFVO 0.5
+ * @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 ServiceException {
LOG.warn("function=getVnf, msg=enter to get a vnf: vnfInstanceId: {}, vnfmId: {}", vnfInstanceId, vnfmId);
JSONObject restJson = new JSONObject();
return restJson.toString();
}
+ /**
+ * <br>
+ *
+ * @param vnfmId
+ * @param resp
+ * @return
+ * @throws ServiceException
+ * @since VFC 1.0
+ */
+ @GET
+ @Path("/{vnfmId}")
+ public String getVnfmById(@PathParam("vnfmId") String vnfmId, @Context HttpServletResponse resp)
+ throws ServiceException {
+ LOG.warn("function=getVnfmById, vnfmId: {}", vnfmId);
+ return VnfmUtil.getVnfmById(vnfmId).toString();
+ }
+
/**
* Provide function for get job
* <br/>
* @param responseId
* @return
* @throws ServiceException
- * @since NFVO 0.5
+ * @since VFC 1.0
*/
@GET
@Path("/{vnfmId}/jobs/{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);
+ LOG.warn("function=getJob, msg=enter to get a job: jobId: {}, responseId: {}", jobId, responseId);
JSONObject restJson = new JSONObject();
if(StringUtils.isEmpty(jobId) || StringUtils.isEmpty(vnfmId)) {
return getJobBody(restJson);
}
+ /**
+ * <br>
+ *
+ * @param context
+ * {
+ * �action�: �vmReset�,
+ * �affectedvm�: {
+ * �vmid�: �804cca71 - 9ae9 - 4511 - 8e30 - d1387718caff�,
+ * �vduid�: �vdu_100�,
+ * �vmname�: �ZTE_SSS_111_PP_2_L�
+ * }
+ * }
+ * @param resp
+ * @param vnfmId
+ * @param vnfInstanceId
+ * @return
+ * @throws ServiceException
+ * @since VFC 1.0
+ */
+ @PUT
+ @Path("/{vnfmId}/vnfs/{vnfInstanceId}/heal")
+ public String healVnf(@Context HttpServletRequest context, @Context HttpServletResponse resp,
+ @PathParam("vnfmId") String vnfmId, @PathParam("vnfInstanceId") String vnfInstanceId)
+ throws ServiceException {
+ LOG.warn("function=healVnf, msg=enter to heal a vnf: vnfInstanceId: {}, vnfmId: {}", vnfInstanceId, vnfmId);
+ JSONObject restJson = new JSONObject();
+ JSONObject jsonObject = VnfmJsonUtil.getJsonFromContexts(context);
+
+ if(StringUtils.isEmpty(vnfInstanceId) || StringUtils.isEmpty(vnfmId)) {
+ resp.setStatus(Constant.HTTP_INNERERROR);
+ restJson.put("message", "vnfmId is null or vnfInstanceId is null");
+ return restJson.toString();
+ }
+
+ restJson = vnfMgr.healVnf(jsonObject, vnfInstanceId, vnfmId);
+ if(restJson.getInt(Constant.RETCODE) == Constant.REST_FAIL) {
+ LOG.error("function=healVnf, msg=healVnf fail");
+ resp.setStatus(Constant.HTTP_INNERERROR);
+ return restJson.toString();
+ }
+
+ restJson.remove(Constant.RETCODE);
+ restJson.put("jobId", vnfInstanceId + "_put");
+ return restJson.toString();
+ }
+
private String getJobBody(JSONObject 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)));
+ 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)));
jobInfoJson.put("responsedescriptor", responseJson);
return jobInfoJson.toString();
}