Merge "add in volume group model info lookup"
[so.git] / bpmn / MSOCommonBPMN / src / main / java / org / onap / so / bpmn / servicedecomposition / tasks / BBInputSetup.java
index 5296d59..4be2f03 100644 (file)
@@ -90,6 +90,7 @@ import org.onap.so.serviceinstancebeans.Vnfs;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.SerializationFeature;
 
@@ -112,6 +113,9 @@ public class BBInputSetup implements JavaDelegate {
 
        @Autowired
        private BBInputSetupMapperLayer mapperLayer;
+       
+       @Autowired
+       private CloudInfoFromAAI cloudInfoFromAAI;
 
        @Autowired
        private ExceptionBuilder exceptionUtil;
@@ -121,6 +125,10 @@ public class BBInputSetup implements JavaDelegate {
        public BBInputSetupUtils getBbInputSetupUtils() {
                return bbInputSetupUtils;
        }
+       
+       public void setCloudInfoFromAAI(CloudInfoFromAAI cloudInfoFromAAI) {
+               this.cloudInfoFromAAI = cloudInfoFromAAI;
+       }
 
        public void setBbInputSetupUtils(BBInputSetupUtils bbInputSetupUtils) {
                this.bbInputSetupUtils = bbInputSetupUtils;
@@ -382,16 +390,10 @@ public class BBInputSetup implements JavaDelegate {
                                ModelInfo vnfModelInfo = new ModelInfo();
                                vnfModelInfo.setModelCustomizationUuid(vnfModelCustomizationUUID);
                                this.mapCatalogVnf(tempVnf, vnfModelInfo, service);
-                               if (lookupKeyMap.get(ResourceKey.VOLUME_GROUP_ID) == null) {
-                                       for(VolumeGroup volumeGroup : tempVnf.getVolumeGroups()) {
-                                               String volumeGroupCustId = 
-                                                               this.bbInputSetupUtils.getAAIVolumeGroup(cloudConfiguration.getCloudOwner(), 
-                                                                               cloudConfiguration.getLcpCloudRegionId(), volumeGroup.getVolumeGroupId()).getModelCustomizationId();
-                                               if(modelInfo.getModelCustomizationId().equalsIgnoreCase(volumeGroupCustId)) {
-                                                       lookupKeyMap.put(ResourceKey.VOLUME_GROUP_ID, volumeGroup.getVolumeGroupId());
-                                                       break;
-                                               }
-                                       }
+                               Optional<String> volumeGroupIdOp = getVolumeGroupIdRelatedToVfModule(tempVnf, modelInfo, cloudConfiguration.getCloudOwner(), 
+                                               cloudConfiguration.getLcpCloudRegionId(), lookupKeyMap);
+                               if(volumeGroupIdOp.isPresent()) {
+                                       lookupKeyMap.put(ResourceKey.VOLUME_GROUP_ID, volumeGroupIdOp.get());
                                }
                                break;
                        }
@@ -420,6 +422,21 @@ public class BBInputSetup implements JavaDelegate {
                        throw new Exception("Could not find relevant information for related VNF");
                }
        }
+       
+       protected Optional<String> getVolumeGroupIdRelatedToVfModule(GenericVnf vnf, ModelInfo modelInfo, 
+                       String cloudOwner, String cloudRegionId, Map<ResourceKey, String> lookupKeyMap) {
+               if (lookupKeyMap.get(ResourceKey.VOLUME_GROUP_ID) == null) {
+                       for(VolumeGroup volumeGroup : vnf.getVolumeGroups()) {
+                               String volumeGroupCustId = 
+                                               bbInputSetupUtils.getAAIVolumeGroup(cloudOwner, 
+                                                               cloudRegionId, volumeGroup.getVolumeGroupId()).getModelCustomizationId();
+                               if(modelInfo.getModelCustomizationId().equalsIgnoreCase(volumeGroupCustId)) {
+                                       return Optional.of(volumeGroup.getVolumeGroupId());
+                               }
+                       }
+               }
+               return Optional.empty();
+       }
 
        protected void mapCatalogVfModule(VfModule vfModule, ModelInfo modelInfo, Service service,
                        String vnfModelCustomizationUUID) {
@@ -609,8 +626,9 @@ public class BBInputSetup implements JavaDelegate {
                                .getVnfcInstanceGroupCustomizations();
                for (VnfcInstanceGroupCustomization vnfcInstanceGroupCust : vnfcInstanceGroups) {
                        InstanceGroup instanceGroup = this.createInstanceGroup();
-                               instanceGroup.setModelInfoInstanceGroup(this.mapperLayer
-                                               .mapCatalogInstanceGroupToInstanceGroup(null, vnfcInstanceGroupCust.getInstanceGroup()));
+                       org.onap.so.db.catalog.beans.InstanceGroup catalogInstanceGroup = bbInputSetupUtils.getCatalogInstanceGroup(vnfcInstanceGroupCust.getModelUUID());
+                       instanceGroup.setModelInfoInstanceGroup(this.mapperLayer
+                                       .mapCatalogInstanceGroupToInstanceGroup(null, catalogInstanceGroup));
                        instanceGroup.getModelInfoInstanceGroup().setFunction(vnfcInstanceGroupCust.getFunction());
                        instanceGroup.setDescription(vnfcInstanceGroupCust.getDescription());
                        genericVnf.getInstanceGroups().add(instanceGroup);
@@ -980,11 +998,18 @@ public class BBInputSetup implements JavaDelegate {
                        Map<ResourceKey, String> lookupKeyMap, String bbName, GeneralBuildingBlock gBB, Service service,
                        String requestAction, CloudConfiguration cloudConfiguration) throws Exception {
                ServiceInstance serviceInstance = gBB.getServiceInstance();
+               CloudRegion cloudRegion = null;
+               if(cloudConfiguration == null) {
+                       Optional<CloudRegion> cloudRegionOp = cloudInfoFromAAI.getCloudInfoFromAAI(serviceInstance);
+                       if(cloudRegionOp.isPresent()) {
+                               cloudRegion = cloudRegionOp.get();
+                       }
+               }
                if (cloudConfiguration != null && requestAction.equalsIgnoreCase("deleteInstance")) {
                        org.onap.aai.domain.yang.CloudRegion aaiCloudRegion = bbInputSetupUtils.getCloudRegion(cloudConfiguration);
-                       CloudRegion cloudRegion = mapperLayer.mapCloudRegion(cloudConfiguration, aaiCloudRegion);
-                       gBB.setCloudRegion(cloudRegion);
+                       cloudRegion = mapperLayer.mapCloudRegion(cloudConfiguration, aaiCloudRegion);
                }
+               gBB.setCloudRegion(cloudRegion);
                if (bbName.contains(VNF)) {
                        for (GenericVnf genericVnf : serviceInstance.getVnfs()) {
                                if (lookupKeyMap.get(ResourceKey.GENERIC_VNF_ID) != null
@@ -1013,6 +1038,13 @@ public class BBInputSetup implements JavaDelegate {
                                                ModelInfo vfModuleModelInfo = new ModelInfo();
                                                vfModuleModelInfo.setModelCustomizationId(vfModuleCustomizationUUID);
                                                this.mapCatalogVfModule(vfModule, vfModuleModelInfo, service, vnfModelCustomizationUUID);
+                                               if(cloudRegion != null) {
+                                                       Optional<String> volumeGroupIdOp = getVolumeGroupIdRelatedToVfModule(vnf, vfModuleModelInfo, cloudRegion.getCloudOwner(), 
+                                                                       cloudRegion.getLcpCloudRegionId(), lookupKeyMap);
+                                                       if(volumeGroupIdOp.isPresent()) {
+                                                               lookupKeyMap.put(ResourceKey.VOLUME_GROUP_ID, volumeGroupIdOp.get());
+                                                       }
+                                               }
                                                break;
                                        }
                                }
@@ -1028,9 +1060,9 @@ public class BBInputSetup implements JavaDelegate {
                                                vnfModelInfo.setModelCustomizationUuid(vnfModelCustomizationUUID);
                                                this.mapCatalogVnf(vnf, vnfModelInfo, service);
                                                lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, vnf.getVnfId());
-                                               if (cloudConfiguration != null) {
-                                                       String volumeGroupCustomizationUUID = this.bbInputSetupUtils.getAAIVolumeGroup(cloudConfiguration.getCloudOwner(),
-                                                                       cloudConfiguration.getLcpCloudRegionId(), volumeGroup.getVolumeGroupId())
+                                               if (cloudRegion != null) {
+                                                       String volumeGroupCustomizationUUID = this.bbInputSetupUtils.getAAIVolumeGroup(cloudRegion.getCloudOwner(),
+                                                                       cloudRegion.getLcpCloudRegionId(), volumeGroup.getVolumeGroupId())
                                                                        .getModelCustomizationId();
                                                        ModelInfo volumeGroupModelInfo = new ModelInfo();
                                                        volumeGroupModelInfo.setModelCustomizationId(volumeGroupCustomizationUUID);