Code & Workflow Enhancements for CNF - Upgrade
[so.git] / bpmn / MSOCommonBPMN / src / main / java / org / onap / so / bpmn / servicedecomposition / tasks / BBInputSetup.java
index 6d5eb63..f192024 100644 (file)
@@ -86,6 +86,7 @@ import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
 import org.onap.so.db.catalog.beans.OrchestrationStatus;
+import org.onap.so.db.catalog.beans.PnfResourceCustomization;
 import org.onap.so.db.catalog.beans.Service;
 import org.onap.so.db.catalog.beans.ServiceProxyResourceCustomization;
 import org.onap.so.db.catalog.beans.VfModuleCustomization;
@@ -262,6 +263,9 @@ public class BBInputSetup implements JavaDelegate {
         lookupKeyMap.put(ResourceKey.INSTANCE_GROUP_ID, workflowResourceIds.getInstanceGroupId());
         lookupKeyMap.put(ResourceKey.VNF_INSTANCE_NAME, workflowResourceIds.getVnfInstanceName());
         lookupKeyMap.put(ResourceKey.VF_MODULE_INSTANCE_NAME, workflowResourceIds.getVfModuleInstanceName());
+        lookupKeyMap.put(ResourceKey.CHILD_SERVICE_INSTANCE_ID, workflowResourceIds.getChildServiceInstanceId());
+        lookupKeyMap.put(ResourceKey.CHILD_SERVICE_INSTANCE_NAME, workflowResourceIds.getChildServiceInstanceName());
+        lookupKeyMap.put(ResourceKey.PNF_INSTANCE_NAME, workflowResourceIds.getPnfInstanceName());
     }
 
     protected GeneralBuildingBlock getGBBALaCarteNonService(ExecuteBuildingBlock executeBB,
@@ -979,6 +983,13 @@ public class BBInputSetup implements JavaDelegate {
         }
     }
 
+    protected void mapCatalogPnf(Pnf pnf, ModelInfo modelInfo, Service service) {
+        PnfResourceCustomization pnfResourceCustomization = getPnfResourceCustomizationFromService(modelInfo, service);
+        if (pnfResourceCustomization != null) {
+            pnf.setModelInfoPnf(this.mapperLayer.mapCatalogPnfToPnf(pnfResourceCustomization));
+        }
+    }
+
     protected VnfResourceCustomization getVnfResourceCustomizationFromService(ModelInfo modelInfo, Service service) {
         VnfResourceCustomization vnfResourceCustomization = null;
         for (VnfResourceCustomization resourceCust : service.getVnfCustomizations()) {
@@ -990,6 +1001,17 @@ public class BBInputSetup implements JavaDelegate {
         return vnfResourceCustomization;
     }
 
+    protected PnfResourceCustomization getPnfResourceCustomizationFromService(ModelInfo modelInfo, Service service) {
+        PnfResourceCustomization pnfResourceCustomization = null;
+        for (PnfResourceCustomization resourceCust : service.getPnfCustomizations()) {
+            if (resourceCust.getModelCustomizationUUID().equalsIgnoreCase(modelInfo.getModelCustomizationUuid())) {
+                pnfResourceCustomization = resourceCust;
+                break;
+            }
+        }
+        return pnfResourceCustomization;
+    }
+
     protected void populateL3Network(BBInputSetupParameter parameter) {
         L3Network network = null;
         for (L3Network networkTemp : parameter.getServiceInstance().getNetworks()) {
@@ -1250,7 +1272,8 @@ public class BBInputSetup implements JavaDelegate {
                 || requestAction.equalsIgnoreCase("activateFabricConfiguration")
                 || requestAction.equalsIgnoreCase("recreateInstance")
                 || requestAction.equalsIgnoreCase("replaceInstance")
-                || requestAction.equalsIgnoreCase("upgradeInstance") || requestAction.equalsIgnoreCase("healthCheck")) {
+                || requestAction.equalsIgnoreCase("upgradeInstance") || requestAction.equalsIgnoreCase("healthCheck")
+                || requestAction.equalsIgnoreCase("upgradeCnf")) {
             return getGBBMacroExistingService(executeBB, lookupKeyMap, bbName, requestAction,
                     requestDetails.getCloudConfiguration());
         }
@@ -1467,6 +1490,27 @@ public class BBInputSetup implements JavaDelegate {
             cloudRegion = mapperLayer.mapCloudRegion(cloudConfiguration, aaiCloudRegion);
         }
         gBB.setCloudRegion(cloudRegion);
+        String upgradeCnfModelCustomizationUUID = "";
+        String upgradeCnfVfModuleModelCustomizationUUID = "";
+        String upgradeCnfModelVersionId = "";
+        String upgradeCnfVfModuleModelVersionId = "";
+        if (requestDetails.getRelatedInstanceList() != null) {
+            for (RelatedInstanceList relatedInstList : requestDetails.getRelatedInstanceList()) {
+                RelatedInstance relatedInstance = relatedInstList.getRelatedInstance();
+                // condition -1
+                if (relatedInstance.getModelInfo().getModelType().equals(ModelType.vnf)
+                        && requestAction.equalsIgnoreCase("upgradeCnf")) {
+                    upgradeCnfModelCustomizationUUID = relatedInstance.getModelInfo().getModelCustomizationId();
+                    upgradeCnfModelVersionId = relatedInstance.getModelInfo().getModelVersionId();
+                }
+                // condition -2
+                if (relatedInstance.getModelInfo().getModelType().equals(ModelType.vfModule)
+                        && parameter.getRequestAction().equals("upgradeCnf")) {
+                    upgradeCnfVfModuleModelCustomizationUUID = relatedInstance.getModelInfo().getModelCustomizationId();
+                    upgradeCnfVfModuleModelVersionId = relatedInstance.getModelInfo().getModelVersionId();
+                }
+            }
+        }
         if (bbName.contains(VNF) || (bbName.contains(CONTROLLER)
                 && (VNF).equalsIgnoreCase(executeBB.getBuildingBlock().getBpmnScope()))) {
             for (GenericVnf genericVnf : serviceInstance.getVnfs()) {
@@ -1474,12 +1518,18 @@ public class BBInputSetup implements JavaDelegate {
                         && genericVnf.getVnfId().equalsIgnoreCase(lookupKeyMap.get(ResourceKey.GENERIC_VNF_ID))) {
                     org.onap.aai.domain.yang.GenericVnf vnf = bbInputSetupUtils.getAAIGenericVnf(genericVnf.getVnfId());
                     ModelInfo modelInfo = new ModelInfo();
-                    if (vnf != null) {
+                    if ("upgradeCnf".equalsIgnoreCase(requestAction) && upgradeCnfModelCustomizationUUID != null) {
+                        modelInfo.setModelCustomizationUuid(upgradeCnfModelCustomizationUUID);
+                        modelInfo.setModelVersionId(upgradeCnfModelVersionId);
+                        this.mapCatalogVnf(genericVnf, modelInfo, service);
+                    } else if (vnf != null) {
                         modelInfo.setModelCustomizationUuid(vnf.getModelCustomizationId());
+                        this.mapCatalogVnf(genericVnf, modelInfo, service);
                     }
-                    this.mapCatalogVnf(genericVnf, modelInfo, service);
+
                 }
             }
+
         } else if (bbName.contains(VF_MODULE) || (bbName.contains(CONTROLLER)
                 && (VF_MODULE).equalsIgnoreCase(executeBB.getBuildingBlock().getBpmnScope()))) {
             for (GenericVnf vnf : serviceInstance.getVnfs()) {
@@ -1489,14 +1539,28 @@ public class BBInputSetup implements JavaDelegate {
                         String vnfModelCustomizationUUID =
                                 this.bbInputSetupUtils.getAAIGenericVnf(vnf.getVnfId()).getModelCustomizationId();
                         ModelInfo vnfModelInfo = new ModelInfo();
-                        vnfModelInfo.setModelCustomizationUuid(vnfModelCustomizationUUID);
-                        this.mapCatalogVnf(vnf, vnfModelInfo, service);
+                        if ("upgradeCnf".equalsIgnoreCase(requestAction) && upgradeCnfModelCustomizationUUID != null) {
+                            vnfModelInfo.setModelCustomizationUuid(upgradeCnfModelCustomizationUUID);
+                            vnfModelInfo.setModelVersionId(upgradeCnfModelVersionId);
+                            this.mapCatalogVnf(vnf, vnfModelInfo, service);
+                        } else {
+                            vnfModelInfo.setModelCustomizationUuid(vnfModelCustomizationUUID);
+                            this.mapCatalogVnf(vnf, vnfModelInfo, service);
+                        }
                         lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, vnf.getVnfId());
                         String vfModuleCustomizationUUID = this.bbInputSetupUtils
                                 .getAAIVfModule(vnf.getVnfId(), vfModule.getVfModuleId()).getModelCustomizationId();
                         ModelInfo vfModuleModelInfo = new ModelInfo();
-                        vfModuleModelInfo.setModelCustomizationId(vfModuleCustomizationUUID);
-                        this.mapCatalogVfModule(vfModule, vfModuleModelInfo, service, vnfModelCustomizationUUID);
+                        if ("upgradeCnf".equalsIgnoreCase(requestAction)
+                                && upgradeCnfVfModuleModelCustomizationUUID != null) {
+                            vfModuleModelInfo.setModelCustomizationUuid(upgradeCnfVfModuleModelCustomizationUUID);
+                            vfModuleModelInfo.setModelVersionId(upgradeCnfVfModuleModelVersionId);
+                            this.mapCatalogVfModule(vfModule, vfModuleModelInfo, service,
+                                    upgradeCnfVfModuleModelCustomizationUUID);
+                        } else {
+                            vfModuleModelInfo.setModelCustomizationId(vfModuleCustomizationUUID);
+                            this.mapCatalogVfModule(vfModule, vfModuleModelInfo, service, vnfModelCustomizationUUID);
+                        }
                         if (cloudRegion != null) {
                             Optional<String> volumeGroupIdOp = getVolumeGroupIdRelatedToVfModule(vnf, vfModuleModelInfo,
                                     cloudRegion.getCloudOwner(), cloudRegion.getLcpCloudRegionId(), lookupKeyMap);
@@ -1632,9 +1696,25 @@ public class BBInputSetup implements JavaDelegate {
         } else if (bbName.contains(PNF) || (bbName.contains(CONTROLLER)
                 && (PNF).equalsIgnoreCase(executeBB.getBuildingBlock().getBpmnScope()))) {
             String pnfId = lookupKeyMap.get(ResourceKey.PNF);
-            resources.getPnfs().stream()
-                    .filter(pnfs -> Objects.equals(key, pnfs.getModelInfo().getModelCustomizationId())).findFirst()
-                    .ifPresent(pnfs -> BBInputSetupPnf.populatePnfToServiceInstance(pnfs, pnfId, serviceInstance));
+            String pnfInstanceName = lookupKeyMap.get(ResourceKey.PNF_INSTANCE_NAME);
+            if (StringUtils.isNotBlank(pnfInstanceName)) {
+                resources.getPnfs().stream().filter(pnfs -> Objects.equals(pnfInstanceName, pnfs.getInstanceName()))
+                        .findFirst()
+                        .ifPresent(pnfs -> BBInputSetupPnf.populatePnfToServiceInstance(pnfs, pnfId, serviceInstance));
+            } else {
+                resources.getPnfs().stream()
+                        .filter(pnfs -> Objects.equals(key, pnfs.getModelInfo().getModelCustomizationId())).findFirst()
+                        .ifPresent(pnfs -> BBInputSetupPnf.populatePnfToServiceInstance(pnfs, pnfId, serviceInstance));
+            }
+
+            serviceInstance.getPnfs().stream().filter(pnf -> pnfInstanceName.equalsIgnoreCase(pnf.getPnfName()))
+                    .findFirst().ifPresent(pnf -> {
+                        ModelInfo pnfModelInfo = new ModelInfo();
+                        pnfModelInfo.setModelCustomizationUuid(pnf.getModelInfoPnf().getModelCustomizationUuid());
+                        pnfModelInfo.setModelCustomizationId(pnf.getModelInfoPnf().getModelCustomizationUuid());
+                        mapCatalogPnf(pnf, pnfModelInfo, service);
+                    });
+
         } else if (bbName.contains(VF_MODULE) || bbName.contains(VOLUME_GROUP) || (bbName.contains(CONTROLLER)
                 && (VF_MODULE).equalsIgnoreCase(executeBB.getBuildingBlock().getBpmnScope()))) {
             String vfModuleInstanceName = lookupKeyMap.get(ResourceKey.VF_MODULE_INSTANCE_NAME);