Fix the nullpointer error when register PNF
[aai/esr-server.git] / esr-mgr / src / main / java / org / onap / aai / esr / wrapper / PnfManagerWrapper.java
index eb694d0..30d66cc 100644 (file)
  */
 package org.onap.aai.esr.wrapper;
 
+import java.util.ArrayList;
+import java.util.List;
 import javax.ws.rs.core.Response;
 import org.onap.aai.esr.entity.aai.Pnf;
+import org.onap.aai.esr.entity.aai.PnfList;
 import org.onap.aai.esr.entity.rest.PnfRegisterInfo;
 import org.onap.aai.esr.exception.ExceptionUtil;
 import org.onap.aai.esr.exception.ExtsysException;
 import org.onap.aai.esr.externalservice.aai.NetworkProxy;
+import org.onap.aai.esr.util.ExtsysUtil;
 import org.onap.aai.esr.util.PnfManagerUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import com.google.gson.Gson;
 
 public class PnfManagerWrapper {
     private static PnfManagerWrapper pnfManagerWrapper;
     private static final Logger LOG = LoggerFactory.getLogger(PnfManagerWrapper.class);
 
-//    private static PnfManagerUtil pnfManagerUtil = new PnfManagerUtil();
+    private static PnfManagerUtil pnfManagerUtil = new PnfManagerUtil();
     private static NetworkProxy networkProxy = new NetworkProxy();
 
+    ExtsysUtil extsysUtil = new ExtsysUtil();
     /**
      * get PnfManagerWrapper instance.
      * 
@@ -52,8 +58,32 @@ public class PnfManagerWrapper {
      * @return
      */
     public Response queryPnfList() {
-        // TODO Auto-generated method stub
-        return null;
+        List<PnfRegisterInfo> esrPnfList = new ArrayList<>();
+        PnfList pnfList = new PnfList();
+        try {
+            String pnflistStr = networkProxy.queryPnfList();
+            pnfList = new Gson().fromJson(pnflistStr, PnfList.class);
+            LOG.info("Response from AAI by query PNF list: " + pnflistStr);
+            esrPnfList = getEsrPnfList(pnfList);
+            return Response.ok(esrPnfList).build();
+        } catch (ExtsysException e) {
+            LOG.error("Query VNFM list failed !", e);
+            return Response.ok(esrPnfList).build();
+        }
+    }
+
+    /**
+     * @param pnfList
+     * @return
+     */
+    private List<PnfRegisterInfo> getEsrPnfList(PnfList pnfList) {
+        List<PnfRegisterInfo> esrPnfList = new ArrayList<>();
+        for (int i = 0; i < pnfList.getPnf().size(); i++) {
+            Pnf pnf = pnfList.getPnf().get(i);
+            PnfRegisterInfo pnfRegisterInfo = pnfManagerUtil.pnf2PnfRegisterInfo(pnf);
+            esrPnfList.add(pnfRegisterInfo);
+        }
+        return esrPnfList;
     }
 
     /**
@@ -61,8 +91,22 @@ public class PnfManagerWrapper {
      * @return
      */
     public Response queryPnfById(String pnfId) {
-        // TODO Auto-generated method stub
-        return null;
+        PnfRegisterInfo pnfRegisterInfo = queryPnf(pnfId);
+        return Response.ok(pnfRegisterInfo).build();
+    }
+    
+    private PnfRegisterInfo queryPnf(String pnfId) {
+        Pnf pnf = new Pnf();
+        PnfRegisterInfo pnfRegisterInfo = new PnfRegisterInfo();
+        try {
+            String pnfStr = networkProxy.queryPNF(pnfId);
+            LOG.info("Response from AAI by query PNF: " + pnfStr);
+            pnf = new Gson().fromJson(pnfStr, Pnf.class);
+            pnfRegisterInfo = pnfManagerUtil.pnf2PnfRegisterInfo(pnf);
+        } catch (ExtsysException e) {
+            LOG.error("Query PNF detail failed! PNF ID: " + pnfId, e);
+        }
+        return pnfRegisterInfo;
     }
 
     /**
@@ -70,8 +114,32 @@ public class PnfManagerWrapper {
      * @return
      */
     public Response delPnf(String pnfId) {
-        // TODO Auto-generated method stub
-        return null;
+        String resourceVersion = getResourceVersion(pnfId);
+        try {
+            networkProxy.deletePnf(pnfId, resourceVersion);
+            return Response.noContent().build();
+        } catch (ExtsysException e) {
+            LOG.error("Delete PNF from A&AI failed! PNF ID: " + pnfId + "resouce-version:" + resourceVersion, e);
+            throw ExceptionUtil.buildExceptionResponse(e.getMessage());
+        }
+    }
+
+    /**
+     * @param pnfId
+     * @return
+     */
+    private String getResourceVersion(String pnfId) {
+        String resourceVersion = null;
+        try {
+            String pnfStr = networkProxy.queryPNF(pnfId);
+            Pnf pnf = new Gson().fromJson(pnfStr, Pnf.class);
+            if (pnf != null && pnf.getResourceVersion() != null) {
+                resourceVersion = pnf.getResourceVersion();
+            }
+        } catch (ExtsysException e) {
+            LOG.error("Query PNF detail failed! PNF ID: " + pnfId, e);
+        }
+        return resourceVersion;
     }
 
     /**
@@ -79,9 +147,17 @@ public class PnfManagerWrapper {
      * @param pnfId
      * @return
      */
-    public Response updatePnf(PnfRegisterInfo pnf, String pnfId) {
-        // TODO Auto-generated method stub
-        return null;
+    public Response updatePnf(PnfRegisterInfo pnfRegisterInfo, String pnfId) {
+        String resourceVersion = getResourceVersion(pnfId);
+        Pnf pnf = pnfManagerUtil.pnfRegisterInfo2pnf(pnfRegisterInfo);
+        pnf.setResourceVersion(resourceVersion);
+        try {
+            networkProxy.registerPnf(pnfId, pnf);
+            return Response.ok().build();
+        } catch (ExtsysException e) {
+            LOG.error("Update PNF failed !", e);
+            throw ExceptionUtil.buildExceptionResponse(e.getMessage());
+        }
     }
 
     /**
@@ -89,7 +165,9 @@ public class PnfManagerWrapper {
      * @return
      */
     public Response registerPnf(PnfRegisterInfo pnfRegisterInfo) {
-        Pnf pnf = PnfManagerUtil.pnfRegisterInfo2pnf(pnfRegisterInfo);
+        LOG.info("Register PNF with ESR, register info: " + extsysUtil.objectToString(pnfRegisterInfo));
+        Pnf pnf = pnfManagerUtil.pnfRegisterInfo2pnf(pnfRegisterInfo);
+        LOG.info("Register PNF with AAI, register info: " + extsysUtil.objectToString(pnf));
         String pnfName = pnf.getPnfName();
         try {
             networkProxy.registerPnf(pnfName, pnf);