X-Git-Url: https://gerrit.onap.org/r/gitweb?p=aai%2Fesr-server.git;a=blobdiff_plain;f=esr-mgr%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faai%2Fesr%2Fwrapper%2FVimManagerWrapper.java;h=fe44536cecb3f9ae9eaa3d99ff7b2d52511e2d52;hp=e34217dc405be586ae5e47747d75f0dde099a5b5;hb=64b7cc2b82655bd38788f83f36d1266cace70381;hpb=ed26992f976741031237ead3a5dc0565d4318b05 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 e34217d..fe44536 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 @@ -1,5 +1,5 @@ /** - * Copyright 2017 ZTE Corporation. + * Copyright 2017-2018 ZTE Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,7 +20,11 @@ import java.util.List; import javax.ws.rs.core.Response; import org.onap.aai.esr.entity.aai.CloudRegionDetail; import org.onap.aai.esr.entity.aai.CloudRegionList; +import org.onap.aai.esr.entity.aai.Complex; +import org.onap.aai.esr.entity.aai.ComplexList; import org.onap.aai.esr.entity.aai.EsrSystemInfo; +import org.onap.aai.esr.entity.aai.Relationship; +import org.onap.aai.esr.entity.aai.RelationshipData; import org.onap.aai.esr.entity.rest.VimRegisterInfo; import org.onap.aai.esr.entity.rest.VimRegisterResponse; import org.onap.aai.esr.exception.ExceptionUtil; @@ -42,6 +46,8 @@ public class VimManagerWrapper { private static VimManagerUtil vimManagerUtil = new VimManagerUtil(); private static CloudRegionProxy cloudRegionProxy = new CloudRegionProxy(); + + private static VimManagerProxy vimManagerProxy = new VimManagerProxy(); private static ExtsysUtil extsysUtil = new ExtsysUtil(); @@ -52,30 +58,31 @@ public class VimManagerWrapper { */ public static VimManagerWrapper getInstance() { if (vimManagerWrapper == null) { - vimManagerWrapper = new VimManagerWrapper(); + vimManagerWrapper = new VimManagerWrapper(cloudRegionProxy, vimManagerProxy); } return vimManagerWrapper; - + } + + public VimManagerWrapper(CloudRegionProxy cloudRegionProxy, VimManagerProxy vimManagerProxy) { + VimManagerWrapper.cloudRegionProxy = cloudRegionProxy; + VimManagerWrapper.vimManagerProxy = vimManagerProxy; } 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); + CloudRegionDetail cloudRegion = vimManagerUtil.vimRegisterInfo2CloudRegion(vimRegisterInfo); String cloudOwner = vimRegisterInfo.getCloudOwner(); String cloudRegionId = vimRegisterInfo.getCloudRegionId(); + String physicalLocationId = vimRegisterInfo.getPhysicalLocationId(); + String complexName = getComplexName(physicalLocationId); + cloudRegion.setComplexName(complexName); 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 (ExtsysException e) { - LOG.error("Update VIM by Multi-cloud failed !", e); - } + createRelationship(cloudOwner, cloudRegionId, physicalLocationId); + updateVimWithMultiCloud(cloudRegion, cloudOwner, cloudRegionId); return Response.ok(result).build(); } catch (ExtsysException error) { LOG.error("Register VIM failed !", error); @@ -83,12 +90,39 @@ public class VimManagerWrapper { } } + private void updateVimWithMultiCloud(CloudRegionDetail cloudRegion, String cloudOwner, String cloudRegionId) { + Tenant tenant = new Tenant(); + tenant.setDefaultTenant(cloudRegion.getEsrSystemInfoList().getEsrSystemInfo().get(0).getDefaultTenant()); + try { + vimManagerProxy.updateVim(cloudOwner, cloudRegionId, tenant); + } catch (ExtsysException e) { + LOG.error("Update VIM by Multi-cloud failed !", e); + } + } + + private void createRelationship(String cloudOwner, String cloudRegionId, String physicalLocationId) { + Relationship relationship = new Relationship(); + RelationshipData relationshipData = new RelationshipData(); + List relationshipDatas = new ArrayList<>(); + String relatedLink = "/aai/v11/cloud-infrastructure/complexes/complex/" + physicalLocationId; + relationship.setRelatedTo("complex"); + relationship.setRelatedLink(relatedLink); + relationshipData.setRelationshipKey("complex.physical-location-id"); + relationshipData.setRelationshipValue(physicalLocationId); + relationshipDatas.add(relationshipData); + relationship.setRelationshipData(relationshipDatas); + try { + cloudRegionProxy.createCloudRegionRelationShip(cloudOwner, cloudRegionId, relationship); + } catch (ExtsysException e) { + LOG.error("Create relationship between cloudRegion and complex failed !", e); + } + } + 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); + CloudRegionDetail cloudRegionDetail = getVimUpdateInfo(vimRegisterInfo); try { cloudRegionProxy.registerVim(cloudOwner, cloudRegionId, cloudRegionDetail); result.setCloudOwner(cloudOwner); @@ -133,12 +167,11 @@ public class VimManagerWrapper { private List getVimDetailList(CloudRegionList cloudRegionList) { List 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); + VimRegisterInfo vimRegisterInfo = getVimDetail(cloudOwner, cloudRegionId); vimRegisterInfos.add(vimRegisterInfo); } return vimRegisterInfos; @@ -172,28 +205,28 @@ public class VimManagerWrapper { } 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()); + String resourceVersion = null; + CloudRegionDetail cloudRegionDetail = new CloudRegionDetail(); + CloudRegionDetail originalCloudRegionDetail = getOriginalCloudRegion(cloudOwner, cloudRegionId); + if (originalCloudRegionDetail != null) { + resourceVersion = originalCloudRegionDetail.getResourceVersion(); + cloudRegionDetail = vimManagerUtil.vimRegisterInfo2CloudRegion(vimRegisterInfo); + if (resourceVersion != null) { + cloudRegionDetail.setResourceVersion(resourceVersion); + EsrSystemInfo 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); + CloudRegionDetail cloudRegionDetail = queryCloudRegionDetail(cloudOwner, cloudRegionId); String resourceVersion = cloudRegionDetail.getResourceVersion(); try { cloudRegionProxy.deleteVim(cloudOwner, cloudRegionId, resourceVersion); @@ -218,4 +251,33 @@ public class VimManagerWrapper { } return cloudRegionDetail; } + + private String getComplexName(String physicalLocationId) { + Complex complex = new Complex(); + try { + String complexStr = cloudRegionProxy.queryComplex(physicalLocationId); + LOG.info("The complexes query result is: " + complexStr); + complex = new Gson().fromJson(complexStr, Complex.class); + return complex.getComplexName(); + } catch (ExtsysException e) { + LOG.error("Query complex by physical location Id failed !", e); + return null; + } + } + + public Response queryComplexes() { + ComplexList complexList = new ComplexList(); + List physicalLocationIdList = new ArrayList<>(); + try { + String complexesString = cloudRegionProxy.qureyComplexes(); + LOG.info("The complexes query result is: " + complexesString); + complexList = new Gson().fromJson(complexesString, ComplexList.class); + for (int i=0; i