Merge "Changed sdncRequestId to SDNCA_requestId"
[so.git] / bpmn / MSOCommonBPMN / src / main / java / org / onap / so / bpmn / servicedecomposition / tasks / BBInputSetup.java
index b1e5d0d..9260580 100644 (file)
@@ -390,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;
                        }
@@ -428,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) {
@@ -600,16 +609,27 @@ public class BBInputSetup implements JavaDelegate {
                        vnf = createGenericVnf(lookupKeyMap, instanceName, platform, lineOfBusiness,
                                        resourceId, generatedVnfType, instanceParams);
                        serviceInstance.getVnfs().add(vnf);
+                       mapVnfcCollectionInstanceGroup(vnf, modelInfo, service);
                }
                if(vnf != null) {
                        mapCatalogVnf(vnf, modelInfo, service);
-                       mapVnfcCollectionInstanceGroup(vnf, modelInfo, service);
-                       if (instanceGroupId != null && instanceGroupModelInfo != null) {
+                       if (instanceGroupId != null && instanceGroupModelInfo != null
+                                       && instanceGroupModelInfo.getModelType().equals(ModelType.networkInstanceGroup)
+                                       && !instanceGroupInList(vnf, instanceGroupId)) {
                                mapNetworkCollectionInstanceGroup(vnf, instanceGroupId);
                        }
                }
        }
 
+       protected boolean instanceGroupInList(GenericVnf vnf, String instanceGroupId) {
+               for(InstanceGroup instanceGroup : vnf.getInstanceGroups()) {
+                       if(instanceGroup.getId() != null && instanceGroup.getId().equalsIgnoreCase(instanceGroupId)) {
+                               return true;
+                       }
+               }
+               return false;
+       }
+
        protected void mapVnfcCollectionInstanceGroup(GenericVnf genericVnf, ModelInfo modelInfo, Service service) {
                VnfResourceCustomization vnfResourceCustomization = getVnfResourceCustomizationFromService(modelInfo, service);
                if(vnfResourceCustomization != null) {
@@ -881,8 +901,20 @@ public class BBInputSetup implements JavaDelegate {
                        throws Exception {
                String bbName = executeBB.getBuildingBlock().getBpmnFlowName();
                String key = executeBB.getBuildingBlock().getKey();
+               
+               if (requestAction.equalsIgnoreCase("deleteInstance")
+                               || requestAction.equalsIgnoreCase("unassignInstance")
+                               || requestAction.equalsIgnoreCase("activateInstance")
+                               || requestAction.equalsIgnoreCase("activateFabricConfiguration")
+                               || requestAction.equalsIgnoreCase("recreateInstance")
+                               || requestAction.equalsIgnoreCase("replaceInstance")) {
+                       return getGBBMacroExistingService(executeBB, lookupKeyMap, bbName, requestAction,
+                                       requestDetails.getCloudConfiguration());
+               }
+
+               String serviceInstanceId = lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID);
                GeneralBuildingBlock gBB = this.getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap, requestAction,
-                               resourceId);
+                               serviceInstanceId);
                RequestParameters requestParams = requestDetails.getRequestParameters();
                Service service = null;
                if (gBB != null && gBB.getServiceInstance() != null
@@ -905,16 +937,10 @@ public class BBInputSetup implements JavaDelegate {
                if (requestAction.equalsIgnoreCase("deactivateInstance")) {
                        return gBB;
                } else if (requestAction.equalsIgnoreCase("createInstance")) {
-               return getGBBMacroNoUserParamsCreate(executeBB, lookupKeyMap, bbName, key, gBB, service);
-               } else if (requestAction.equalsIgnoreCase("deleteInstance")
-                               || requestAction.equalsIgnoreCase("unassignInstance")
-                               || requestAction.equalsIgnoreCase("activateInstance")
-                               || requestAction.equalsIgnoreCase("activateFabricConfiguration")) {
-                       return getGBBMacroExistingService(executeBB, lookupKeyMap, bbName, gBB, service, requestAction,
-                                       requestDetails.getCloudConfiguration());
+                       return getGBBMacroNoUserParamsCreate(executeBB, lookupKeyMap, bbName, key, gBB, service);
                } else {
-               throw new IllegalArgumentException(
-                               "No user params on requestAction: assignInstance. Please specify user params.");
+                       throw new IllegalArgumentException(
+                                       "No user params on requestAction: assignInstance. Please specify user params.");
                }
        }
 
@@ -986,8 +1012,27 @@ public class BBInputSetup implements JavaDelegate {
        }
 
        protected GeneralBuildingBlock getGBBMacroExistingService(ExecuteBuildingBlock executeBB,
-                       Map<ResourceKey, String> lookupKeyMap, String bbName, GeneralBuildingBlock gBB, Service service,
-                       String requestAction, CloudConfiguration cloudConfiguration) throws Exception {
+                       Map<ResourceKey, String> lookupKeyMap, String bbName, String requestAction, CloudConfiguration cloudConfiguration) throws Exception {
+               org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = null;
+               String serviceInstanceId = lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID);
+               RequestDetails requestDetails = executeBB.getRequestDetails();
+               GeneralBuildingBlock gBB = null;
+               if (serviceInstanceId != null) {
+                       aaiServiceInstance = bbInputSetupUtils.getAAIServiceInstanceById(serviceInstanceId);
+               }
+               Service service = null;
+               if (aaiServiceInstance != null) {
+                       service = bbInputSetupUtils.getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
+               }
+               if (aaiServiceInstance != null && service != null) {
+                       ServiceInstance serviceInstance = this.getExistingServiceInstance(aaiServiceInstance);
+                       serviceInstance.setModelInfoServiceInstance(this.mapperLayer.mapCatalogServiceIntoServiceInstance(service));
+                       gBB = populateGBBWithSIAndAdditionalInfo(requestDetails, serviceInstance, executeBB, requestAction, null);
+               } else {
+                       msoLogger.debug("Related Service Instance from AAI: " + aaiServiceInstance);
+                       msoLogger.debug("Related Service Instance Model Info from AAI: " + service);
+                       throw new Exception("Could not find relevant information for related Service Instance");
+               }
                ServiceInstance serviceInstance = gBB.getServiceInstance();
                CloudRegion cloudRegion = null;
                if(cloudConfiguration == null) {
@@ -996,7 +1041,7 @@ public class BBInputSetup implements JavaDelegate {
                                cloudRegion = cloudRegionOp.get();
                        }
                }
-               if (cloudConfiguration != null && requestAction.equalsIgnoreCase("deleteInstance")) {
+               if (cloudConfiguration != null) {
                        org.onap.aai.domain.yang.CloudRegion aaiCloudRegion = bbInputSetupUtils.getCloudRegion(cloudConfiguration);
                        cloudRegion = mapperLayer.mapCloudRegion(cloudConfiguration, aaiCloudRegion);
                }
@@ -1029,6 +1074,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;
                                        }
                                }