X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=esr-mgr%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faai%2Fesr%2Fwrapper%2FVimManagerWrapper.java;h=75eaaca5ff1bd5cc950fed0e54920418aa0be9db;hb=768eda8233bd6c2f4e512365f6bfd1ccd323bcbf;hp=5d828220733252599df01ba15f6c72dba2cfee51;hpb=91e4d4835374d407f8a31b61f2cd601a259b13b1;p=aai%2Fesr-server.git diff --git a/esr-mgr/src/main/java/org/onap/aai/esr/wrapper/VimManagerWrapper.java b/esr-mgr/src/main/java/org/onap/aai/esr/wrapper/VimManagerWrapper.java index 5d82822..75eaaca 100644 --- a/esr-mgr/src/main/java/org/onap/aai/esr/wrapper/VimManagerWrapper.java +++ b/esr-mgr/src/main/java/org/onap/aai/esr/wrapper/VimManagerWrapper.java @@ -19,18 +19,31 @@ import java.util.ArrayList; import javax.ws.rs.core.Response; -import org.onap.aai.esr.entity.rest.RegisterResponse; -import org.onap.aai.esr.entity.rest.VimRestData; -//import org.slf4j.Logger; -//import org.slf4j.LoggerFactory; +import org.onap.aai.esr.entity.aai.CloudRegionDetail; +import org.onap.aai.esr.entity.aai.CloudRegionList; +import org.onap.aai.esr.entity.aai.EsrSystemInfo; +import org.onap.aai.esr.entity.rest.VimRegisterInfo; +import org.onap.aai.esr.entity.rest.VimRegisterResponse; +import org.onap.aai.esr.externalservice.aai.CloudRegionProxy; +import org.onap.aai.esr.externalservice.cloud.Tenant; +import org.onap.aai.esr.externalservice.cloud.VimManagerProxy; +import org.onap.aai.esr.util.ExtsysUtil; +import org.onap.aai.esr.util.VimManagerUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.gson.Gson; + public class VimManagerWrapper { private static VimManagerWrapper vimManagerWrapper; -// private static final Logger LOG = LoggerFactory.getLogger(VimManagerWrapper.class); + private static final Logger LOG = LoggerFactory.getLogger(VimManagerWrapper.class); + private static VimManagerUtil vimManagerUtil = new VimManagerUtil(); /** * get VimManagerWrapper instance. + * * @return vim manager wrapper instance */ public static VimManagerWrapper getInstance() { @@ -38,33 +51,180 @@ public class VimManagerWrapper { vimManagerWrapper = new VimManagerWrapper(); } return vimManagerWrapper; + } - - public Response registerVim(VimRestData vim) { - //TODO - RegisterResponse result = null; - return Response.ok(result).build(); + + public Response registerVim(VimRegisterInfo vimRegisterInfo) { + LOG.info( + "Start register VIM, input VIM info is: " + ExtsysUtil.objectToString(vimRegisterInfo)); + CloudRegionDetail cloudRegion = new CloudRegionDetail(); + VimRegisterResponse result = new VimRegisterResponse(); + cloudRegion = vimManagerUtil.vimRegisterInfo2CloudRegion(vimRegisterInfo); + String cloudOwner = vimRegisterInfo.getCloudOwner(); + String cloudRegionId = vimRegisterInfo.getCloudRegionId(); + try { + CloudRegionProxy.registerVim(cloudOwner, cloudRegionId, cloudRegion); + result.setCloudOwner(cloudOwner); + result.setCloudRegionId(cloudRegionId); + Tenant tenant = new Tenant(); + tenant.setDefaultTenant(cloudRegion.getEsrSystemInfoList().getEsrSystemInfo().get(0).getDefaultTenant()); + try { + VimManagerProxy.updateVim(cloudOwner, cloudRegionId, tenant); + } catch (Exception e) { + e.printStackTrace(); + LOG.error("Update VIM by Multi-cloud failed !" + e.getMessage()); + } + return Response.ok(result).build(); + } catch (Exception error) { + error.printStackTrace(); + LOG.error("Register VIM failed !" + error.getMessage()); + return Response.serverError().build(); + } } - public Response updateVim(VimRestData vim) { - //TODO - return Response.ok().build(); + public Response updateVim(String cloudOwner, String cloudRegionId,VimRegisterInfo vimRegisterInfo) { + LOG.info("Start update VIM, input VIM info is: " + ExtsysUtil.objectToString(vimRegisterInfo)); + CloudRegionDetail cloudRegionDetail = new CloudRegionDetail(); + VimRegisterResponse result = new VimRegisterResponse(); + + cloudRegionDetail = getVimUpdateInfo(vimRegisterInfo); + try { + CloudRegionProxy.registerVim(cloudOwner, cloudRegionId, cloudRegionDetail); + result.setCloudOwner(cloudOwner); + result.setCloudRegionId(cloudRegionId); + return Response.ok(result).build(); + } catch (Exception e) { + e.printStackTrace(); + LOG.error("Update VIM failed !" + e.getMessage()); + return Response.serverError().build(); + } } - - public Response queryVimList() { - //TODO - ArrayList vimList = new ArrayList(); - return Response.ok(vimList).build(); + + public Response queryVimListDetails() { + ArrayList vimRegisterInfos = new ArrayList(); + CloudRegionList cloudRegionList = new CloudRegionList(); + try { + String aaiVimList = CloudRegionProxy.qureyVimList(); + cloudRegionList = new Gson().fromJson(aaiVimList, CloudRegionList.class); + vimRegisterInfos = getVimDetailList(cloudRegionList); + return Response.ok(vimRegisterInfos).build(); + } catch (Exception error) { + error.printStackTrace(); + LOG.error("Query vim list details failed !" + error.getMessage()); + return Response.ok(vimRegisterInfos).build(); + } + + } + + public Response queryVimById(String cloudOwner, String cloudRegionId) { + VimRegisterInfo vim = new VimRegisterInfo(); + CloudRegionDetail cloudRegionDetail = new CloudRegionDetail(); + try { + String cloudRegionstr = CloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId); + LOG.info("Response from AAI by query VIM: " + cloudRegionstr); + cloudRegionDetail = new Gson().fromJson(cloudRegionstr, CloudRegionDetail.class); + vim = vimManagerUtil.cloudRegion2VimRegisterInfo(cloudRegionDetail); + return Response.ok(vim).build(); + } catch (Exception e) { + e.printStackTrace(); + return Response.ok(vim).build(); + } + + } + + private ArrayList getVimDetailList(CloudRegionList cloudRegionList) { + ArrayList vimRegisterInfos = new ArrayList(); + VimRegisterInfo vimRegisterInfo = new VimRegisterInfo(); + int cloudRegionNum = cloudRegionList.getCloudRegion().size(); + for (int i = 0; i < cloudRegionNum; i++) { + String cloudOwner = cloudRegionList.getCloudRegion().get(i).getCloudOwner(); + String cloudRegionId = cloudRegionList.getCloudRegion().get(i).getCloudRegionId(); + vimRegisterInfo = getVimDetail(cloudOwner, cloudRegionId); + vimRegisterInfos.add(vimRegisterInfo); + } + return vimRegisterInfos; + } + + private VimRegisterInfo getVimDetail(String cloudOwner, String cloudRegionId) { + CloudRegionDetail cloudRegionDetail = new CloudRegionDetail(); + VimRegisterInfo registeredVimInfo = new VimRegisterInfo(); + try { + String cloudRegionstr = CloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId); + cloudRegionDetail = new Gson().fromJson(cloudRegionstr, CloudRegionDetail.class); + registeredVimInfo = vimManagerUtil.cloudRegion2VimRegisterInfo(cloudRegionDetail); + } catch (Exception error) { + error.printStackTrace(); + LOG.error("query VIM detail failed ! cloud-owner = " + cloudOwner + ", cloud-region-id = " + + cloudRegionId + error.getMessage()); + } + return registeredVimInfo; + } + + private CloudRegionDetail getOriginalCloudRegion(String cloudOwner, String cloudRegionId) { + CloudRegionDetail cloudRegionDetail = new CloudRegionDetail(); + try { + String cloudRegionstr = CloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId); + cloudRegionDetail = new Gson().fromJson(cloudRegionstr, CloudRegionDetail.class); + return cloudRegionDetail; + } catch (Exception error) { + error.printStackTrace(); + LOG.error("query VIM detail failed ! cloud-owner = " + cloudOwner + ", cloud-region-id = " + + cloudRegionId + error.getMessage()); + return null; + } } - public Response queryVimById(String vimId) { - VimRestData vim = new VimRestData(); - //TODO - return Response.ok(vim).build(); + private CloudRegionDetail getVimUpdateInfo(VimRegisterInfo vimRegisterInfo) { + CloudRegionDetail cloudRegionDetail = new CloudRegionDetail(); + CloudRegionDetail originalCloudRegionDetail = new CloudRegionDetail(); + EsrSystemInfo originalSystemInfo = new EsrSystemInfo(); + String cloudOwner = vimRegisterInfo.getCloudOwner(); + String cloudRegionId = vimRegisterInfo.getCloudRegionId(); + originalCloudRegionDetail = getOriginalCloudRegion(cloudOwner, cloudRegionId); + String resourceVersion = originalCloudRegionDetail.getResourceVersion(); + cloudRegionDetail = vimManagerUtil.vimRegisterInfo2CloudRegion(vimRegisterInfo); + if(resourceVersion != null) { + cloudRegionDetail.setResourceVersion(resourceVersion); + originalSystemInfo = originalCloudRegionDetail.getEsrSystemInfoList().getEsrSystemInfo().get(0); + cloudRegionDetail.getEsrSystemInfoList().getEsrSystemInfo().get(0).setEsrSystemInfoId(originalSystemInfo.getEsrSystemInfoId()); + cloudRegionDetail.getEsrSystemInfoList().getEsrSystemInfo().get(0).setResouceVersion(originalSystemInfo.getResouceVersion()); + } + return cloudRegionDetail; + } + + public Response delVim(String cloudOwner, String cloudRegionId) { + CloudRegionDetail cloudRegionDetail = new CloudRegionDetail(); + cloudRegionDetail = queryCloudRegionDetail(cloudOwner, cloudRegionId); + String resourceVersion = cloudRegionDetail.getResourceVersion(); + if (resourceVersion != null) { + try { + CloudRegionProxy.deleteVim(cloudOwner, cloudRegionId, resourceVersion); + return Response.noContent().build(); + } catch (Exception e) { + e.printStackTrace(); + LOG.error( + "Delete cloud region from A&AI failed! cloud-owner = " + cloudOwner + + ", cloud-region-id = " + cloudRegionId + "resouce-version:" + resourceVersion, + e.getMessage()); + return Response.serverError().build(); + } + } else { + LOG.error("resouce-version is null ! Can not delete resouce from A&AI. "); + return Response.serverError().build(); + } } - public Response delVim(String vimId) { - //TODO - return Response.noContent().build(); + private CloudRegionDetail queryCloudRegionDetail (String cloudOwner, String cloudRegionId) { + CloudRegionDetail cloudRegionDetail = new CloudRegionDetail(); + try { + String cloudRegionStr = CloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId); + LOG.info("Response from AAI by query cloud region: " + cloudRegionStr); + cloudRegionDetail = new Gson().fromJson(cloudRegionStr, CloudRegionDetail.class); + } catch (Exception e) { + e.printStackTrace(); + LOG.error("Query EMS detail failed! cloud-owner = " + cloudOwner + + ", cloud-region-id = " + cloudRegionId , e.getMessage()); + } + return cloudRegionDetail; } }