*/
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.externalservice.aai.ExternalSystemProxy;
+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 ExternalSystemProxy externalSystemProxy = new ExternalSystemProxy();
+ private static PnfManagerUtil pnfManagerUtil = new PnfManagerUtil();
+ private static NetworkProxy networkProxy = new NetworkProxy();
+ ExtsysUtil extsysUtil = new ExtsysUtil();
/**
* get PnfManagerWrapper instance.
*
*/
public static PnfManagerWrapper getInstance() {
if (pnfManagerWrapper == null) {
- pnfManagerWrapper = new PnfManagerWrapper(externalSystemProxy);
+ pnfManagerWrapper = new PnfManagerWrapper(networkProxy);
}
return pnfManagerWrapper;
}
- public PnfManagerWrapper(ExternalSystemProxy externalSystemProxy){
- PnfManagerWrapper.externalSystemProxy = externalSystemProxy;
+ public PnfManagerWrapper(NetworkProxy networkProxy){
+ PnfManagerWrapper.networkProxy = networkProxy;
}
/**
* @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;
}
/**
* @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;
}
/**
* @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;
}
/**
* @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());
+ }
}
/**
* @param pnf
* @return
*/
- public Response registerPnf(PnfRegisterInfo pnf) {
- // TODO Auto-generated method stub
- return null;
+ public Response registerPnf(PnfRegisterInfo 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);
+ return Response.ok().build();
+ } catch (ExtsysException e) {
+ LOG.error("Register PNF failed !", e);
+ throw ExceptionUtil.buildExceptionResponse(e.getMessage());
+ }
}
}