Merge branch 'recursive-orch'
[so.git] / bpmn / so-bpmn-tasks / src / main / java / org / onap / so / bpmn / infrastructure / workflow / tasks / ebb / loader / UserParamsServiceTraversal.java
index 4b1fdd8..b56bd90 100644 (file)
@@ -10,6 +10,8 @@
  * ================================================================================
  * Modifications Copyright (c) 2020 Tech Mahindra
  * ================================================================================
+ * Modifications Copyright (c) 2021 Orange
+ * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -36,6 +38,7 @@ import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
 import org.onap.so.db.catalog.beans.CvnfcCustomization;
 import org.onap.so.db.catalog.beans.VfModuleCustomization;
 import org.onap.so.db.catalog.client.CatalogDbClient;
+import org.onap.so.serviceinstancebeans.ModelInfo;
 import org.onap.so.serviceinstancebeans.Networks;
 import org.onap.so.serviceinstancebeans.Pnfs;
 import org.onap.so.serviceinstancebeans.Service;
@@ -89,38 +92,70 @@ public class UserParamsServiceTraversal {
     private List<Resource> getResourceList(DelegateExecution execution, String serviceModelVersionId,
             String requestAction, Service validate) {
         List<Resource> resourceList = new ArrayList<>();
-        resourceList.add(new Resource(WorkflowType.SERVICE, validate.getModelInfo().getModelVersionId(), false));
+        Resource serviceResource =
+                new Resource(WorkflowType.SERVICE, validate.getModelInfo().getModelVersionId(), false, null);
+        ModelInfo modelInfo = validate.getModelInfo();
+        if (modelInfo != null) {
+            serviceResource.setModelVersionId(modelInfo.getModelVersionId());
+            serviceResource.setModelInvariantId(modelInfo.getModelInvariantUuid());
+        }
+        resourceList.add(serviceResource);
+        if (validate.getResources().getServices() != null) {
+            setResourceListForChildServices(execution, resourceList, serviceResource, validate);
+        }
         if (validate.getResources().getVnfs() != null) {
-            setResourceListForVnfs(execution, resourceList, validate);
+            setResourceListForVnfs(execution, resourceList, serviceResource, validate);
         }
         if (validate.getResources().getPnfs() != null) {
-            setResourceListForPnfs(resourceList, validate);
+            setResourceListForPnfs(resourceList, serviceResource, validate);
         }
         if (validate.getResources().getNetworks() != null) {
-            setResourceListForNetworks(execution, serviceModelVersionId, requestAction, resourceList, validate);
+            setResourceListForNetworks(execution, serviceModelVersionId, requestAction, resourceList, serviceResource,
+                    validate);
         }
         return resourceList;
     }
 
-    private void setResourceListForVnfs(DelegateExecution execution, List<Resource> resourceList, Service validate) {
+    private void setResourceListForChildServices(DelegateExecution execution, List<Resource> resourceList,
+            Resource serviceResource, Service validate) {
+        for (Service childService : validate.getResources().getServices()) {
+            Resource childServiceResource = new Resource(WorkflowType.SERVICE,
+                    childService.getModelInfo().getModelVersionId(), false, serviceResource);
+            childServiceResource.setProcessingPriority(childService.getProcessingPriority());
+            childServiceResource.setInstanceName(childService.getInstanceName());
+            resourceList.add(childServiceResource);
+        }
+    }
+
+    private void setResourceListForVnfs(DelegateExecution execution, List<Resource> resourceList,
+            Resource serviceResource, Service validate) {
         for (Vnfs vnf : validate.getResources().getVnfs()) {
             setVnfCustomizationUUID(vnf);
-            resourceList.add(new Resource(WorkflowType.VNF, vnf.getModelInfo().getModelCustomizationId(), false));
-            setResourceListForVfModules(execution, resourceList, validate, vnf);
+            Resource vnfResource = new Resource(WorkflowType.VNF, vnf.getModelInfo().getModelCustomizationId(), false,
+                    serviceResource);
+            vnfResource.setProcessingPriority(vnf.getProcessingPriority());
+            vnfResource.setInstanceName(vnf.getInstanceName());
+            ModelInfo modelInfo = vnf.getModelInfo();
+            if (modelInfo != null) {
+                vnfResource.setModelCustomizationId(modelInfo.getModelCustomizationUuid());
+                vnfResource.setModelVersionId(modelInfo.getModelVersionId());
+            }
+            resourceList.add(vnfResource);
+            setResourceListForVfModules(execution, resourceList, vnfResource, validate, vnf);
         }
     }
 
-    private void setResourceListForVfModules(DelegateExecution execution, List<Resource> resourceList, Service validate,
-            Vnfs vnf) {
+    private void setResourceListForVfModules(DelegateExecution execution, List<Resource> resourceList,
+            Resource vnfResource, Service validate, Vnfs vnf) {
         if (vnf.getVfModules() != null) {
             for (VfModules vfModule : vnf.getVfModules()) {
                 setVfModuleCustomizationUUID(vfModule);
                 VfModuleCustomization vfModuleCustomization =
                         catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID(vfModuleCustomizationUUID);
                 if (vfModuleCustomization != null && vfModuleCustomization.getVfModule() != null) {
-                    setVolumeGroupWorkFlowTypeToResourceList(resourceList, vfModuleCustomization);
-                    setVfModuleAndConfigurationWorkFlowTypeToResourceList(resourceList, validate, vnf, vfModule,
-                            vfModuleCustomization);
+                    setVolumeGroupWorkFlowTypeToResourceList(resourceList, vnfResource, vfModuleCustomization);
+                    setVfModuleAndConfigurationWorkFlowTypeToResourceList(resourceList, vnfResource, validate, vnf,
+                            vfModule, vfModuleCustomization);
                     if (!foundVfModuleOrVG) {
                         buildAndThrowException(execution,
                                 "Could not determine if vfModule was a vfModule or volume group. Heat template and Heat env are null");
@@ -130,46 +165,55 @@ public class UserParamsServiceTraversal {
         }
     }
 
-    private void setVolumeGroupWorkFlowTypeToResourceList(List<Resource> resourceList,
+    private void setVolumeGroupWorkFlowTypeToResourceList(List<Resource> resourceList, Resource vnfResource,
             VfModuleCustomization vfModuleCustomization) {
         if (vfModuleCustomization.getVfModule().getVolumeHeatTemplate() != null
                 && vfModuleCustomization.getVolumeHeatEnv() != null) {
             foundVfModuleOrVG = true;
-            resourceList.add(
-                    new Resource(WorkflowType.VOLUMEGROUP, vfModuleCustomization.getModelCustomizationUUID(), false));
+            resourceList.add(new Resource(WorkflowType.VOLUMEGROUP, vfModuleCustomization.getModelCustomizationUUID(),
+                    false, vnfResource));
         }
     }
 
-    private void setVfModuleAndConfigurationWorkFlowTypeToResourceList(List<Resource> resourceList, Service validate,
-            Vnfs vnf, VfModules vfModule, VfModuleCustomization vfModuleCustomization) {
+    private void setVfModuleAndConfigurationWorkFlowTypeToResourceList(List<Resource> resourceList,
+            Resource vnfResource, Service validate, Vnfs vnf, VfModules vfModule,
+            VfModuleCustomization vfModuleCustomization) {
         if ((vfModuleCustomization.getVfModule().getModuleHeatTemplate() != null
                 && vfModuleCustomization.getHeatEnvironment() != null)
                 || (vfModuleCustomization.getVfModule().getModelName() != null
                         && vfModuleCustomization.getVfModule().getModelName().contains("helm"))) {
             foundVfModuleOrVG = true;
-            Resource resource = setVfModuleWorkFlowTypeToResourceList(resourceList, vfModuleCustomization);
-            setConfigurationWorkFlowTypeToResourceList(resourceList, validate, vnf, vfModule, resource);
+            Resource resource =
+                    setVfModuleWorkFlowTypeToResourceList(resourceList, vnfResource, vfModuleCustomization, vfModule);
+            if (vnf.getModelInfo() != null) {
+                resource.setModelVersionId(vnf.getModelInfo().getModelVersionId());
+            }
+            resource.setVfModuleCustomizationId(vfModuleCustomization.getModelCustomizationUUID());
+            resource.setModelCustomizationId(vfModuleCustomization.getModelCustomizationUUID());
+            setConfigurationWorkFlowTypeToResourceList(resourceList, vnfResource, validate, vnf, vfModule, resource);
         }
     }
 
-    private Resource setVfModuleWorkFlowTypeToResourceList(List<Resource> resourceList,
-            VfModuleCustomization vfModuleCustomization) {
-        Resource resource =
-                new Resource(WorkflowType.VFMODULE, vfModuleCustomization.getModelCustomizationUUID(), false);
+    private Resource setVfModuleWorkFlowTypeToResourceList(List<Resource> resourceList, Resource vnfResource,
+            VfModuleCustomization vfModuleCustomization, VfModules vfModule) {
+        Resource resource = new Resource(WorkflowType.VFMODULE, vfModuleCustomization.getModelCustomizationUUID(),
+                false, vnfResource);
+        resource.setProcessingPriority(vfModule.getProcessingPriority());
         resource.setBaseVfModule(vfModuleCustomization.getVfModule().getIsBase() != null
                 && vfModuleCustomization.getVfModule().getIsBase());
+        resource.setInstanceName(vfModule.getInstanceName());
         resourceList.add(resource);
         return resource;
     }
 
-    private void setConfigurationWorkFlowTypeToResourceList(List<Resource> resourceList, Service validate, Vnfs vnf,
-            VfModules vfModule, Resource resource) {
+    private void setConfigurationWorkFlowTypeToResourceList(List<Resource> resourceList, Resource vnfResource,
+            Service validate, Vnfs vnf, VfModules vfModule, Resource resource) {
         if (!vnfCustomizationUUID.isEmpty() && !vfModuleCustomizationUUID.isEmpty()) {
             List<CvnfcConfigurationCustomization> configs =
                     traverseCatalogDbForConfiguration(validate.getModelInfo().getModelVersionId());
             for (CvnfcConfigurationCustomization config : configs) {
                 Resource configResource = new Resource(WorkflowType.CONFIGURATION,
-                        config.getConfigurationResource().getModelUUID(), false);
+                        config.getConfigurationResource().getModelUUID(), false, vnfResource);
                 resource.setVnfCustomizationId(vnf.getModelInfo().getModelCustomizationId());
                 resource.setVfModuleCustomizationId(vfModule.getModelInfo().getModelCustomizationId());
                 resourceList.add(configResource);
@@ -193,22 +237,38 @@ public class UserParamsServiceTraversal {
         }
     }
 
-    private void setResourceListForPnfs(List<Resource> resourceList, Service validate) {
+    private void setResourceListForPnfs(List<Resource> resourceList, Resource serviceResource, Service validate) {
         for (Pnfs pnf : validate.getResources().getPnfs()) {
-            resourceList.add(new Resource(WorkflowType.PNF, pnf.getModelInfo().getModelCustomizationId(), false));
+            Resource pnfResource = new Resource(WorkflowType.PNF, pnf.getModelInfo().getModelCustomizationId(), false,
+                    serviceResource);
+            ModelInfo modelInfo = pnf.getModelInfo();
+            if (modelInfo != null) {
+                pnfResource.setModelCustomizationId(modelInfo.getModelCustomizationUuid());
+                pnfResource.setModelVersionId(modelInfo.getModelVersionId());
+            }
+            pnfResource.setProcessingPriority(pnf.getProcessingPriority());
+            resourceList.add(pnfResource);
         }
     }
 
     private void setResourceListForNetworks(DelegateExecution execution, String serviceModelVersionId,
-            String requestAction, List<Resource> resourceList, Service validate) {
+            String requestAction, List<Resource> resourceList, Resource serviceResource, Service validate) {
         for (Networks network : validate.getResources().getNetworks()) {
-            resourceList
-                    .add(new Resource(WorkflowType.NETWORK, network.getModelInfo().getModelCustomizationId(), false));
+            Resource networkResource = new Resource(WorkflowType.NETWORK,
+                    network.getModelInfo().getModelCustomizationId(), false, serviceResource);
+            networkResource.setProcessingPriority(network.getProcessingPriority());
+            ModelInfo modelInfo = network.getModelInfo();
+            if (modelInfo != null) {
+                networkResource.setModelCustomizationId(modelInfo.getModelCustomizationUuid());
+                networkResource.setModelVersionId(modelInfo.getModelVersionId());
+            }
+            resourceList.add(networkResource);
         }
         if (requestAction.equals(CREATE_INSTANCE)) {
             String networkColCustId = queryCatalogDbForNetworkCollection(execution, serviceModelVersionId);
             if (networkColCustId != null) {
-                resourceList.add(new Resource(WorkflowType.NETWORKCOLLECTION, networkColCustId, false));
+                resourceList
+                        .add(new Resource(WorkflowType.NETWORKCOLLECTION, networkColCustId, false, serviceResource));
             }
         }
     }