Merge "WorkflowAction, traverseNetworkCollection refactoring stage 5"
authorLukasz Muszkieta <lukasz.muszkieta@nokia.com>
Wed, 1 Jul 2020 14:38:12 +0000 (14:38 +0000)
committerGerrit Code Review <gerrit@onap.org>
Wed, 1 Jul 2020 14:38:12 +0000 (14:38 +0000)
1  2 
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java

@@@ -75,6 -75,7 +75,7 @@@ import org.onap.so.db.catalog.beans.Col
  import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
  import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
  import org.onap.so.db.catalog.beans.CvnfcCustomization;
+ import org.onap.so.db.catalog.beans.InstanceGroup;
  import org.onap.so.db.catalog.beans.VfModuleCustomization;
  import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
  import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
@@@ -176,32 -177,25 +177,32 @@@ public class WorkflowAction 
              final String bpmnRequest = (String) execution.getVariable(BBConstants.G_BPMN_REQUEST);
              ServiceInstancesRequest sIRequest =
                      new ObjectMapper().readValue(bpmnRequest, ServiceInstancesRequest.class);
 -            RequestDetails requestDetails = sIRequest.getRequestDetails();
 -            String uri = (String) execution.getVariable(BBConstants.G_URI);
 +
              final String requestId = (String) execution.getVariable(BBConstants.G_REQUEST_ID);
 -            final boolean aLaCarte = (boolean) execution.getVariable(BBConstants.G_ALACARTE);
 +
 +            String uri = (String) execution.getVariable(BBConstants.G_URI);
              boolean isResume = isUriResume(uri);
 -            String requestAction = (String) execution.getVariable(BBConstants.G_ACTION);
 +
 +            final boolean isALaCarte = (boolean) execution.getVariable(BBConstants.G_ALACARTE);
 +            Resource resource = getResource(bbInputSetupUtils, isResume, isALaCarte, uri, requestId);
 +
              WorkflowResourceIds workflowResourceIds = populateResourceIdsFromApiHandler(execution);
 -            Resource resource = getResource(bbInputSetupUtils, isResume, aLaCarte, uri, requestId);
 +            RequestDetails requestDetails = sIRequest.getRequestDetails();
 +            String requestAction = (String) execution.getVariable(BBConstants.G_ACTION);
              String resourceId = getResourceId(resource, requestAction, requestDetails, workflowResourceIds);
              WorkflowType resourceType = resource.getResourceType();
 +
              String serviceInstanceId = getServiceInstanceId(execution, resourceId, resourceType);
 +
              fillExecution(execution, requestDetails.getRequestInfo().getSuppressRollback(), resourceId, resourceType);
              List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
 -            if (isRequestMacroServiceResume(aLaCarte, resourceType, requestAction, serviceInstanceId)) {
 +
 +            if (isRequestMacroServiceResume(isALaCarte, resourceType, requestAction, serviceInstanceId)) {
                  flowsToExecute = bbInputSetupUtils.loadOriginalFlowExecutionPath(requestId);
                  if (flowsToExecute == null) {
                      buildAndThrowException(execution, "Could not resume Macro flow. Error loading execution path.");
                  }
 -            } else if (aLaCarte && isResume) {
 +            } else if (isALaCarte && isResume) {
                  flowsToExecute = bbInputSetupUtils.loadOriginalFlowExecutionPath(requestId);
                  if (flowsToExecute == null) {
                      buildAndThrowException(execution,
                  final String apiVersion = (String) execution.getVariable(BBConstants.G_APIVERSION);
                  final String serviceType =
                          Optional.ofNullable((String) execution.getVariable(BBConstants.G_SERVICE_TYPE)).orElse("");
 -                if (aLaCarte) {
 +                if (isALaCarte) {
                      if (orchFlows == null || orchFlows.isEmpty()) {
                          orchFlows = queryNorthBoundRequestCatalogDb(execution, requestAction, resourceType, true,
                                  cloudOwner, serviceType);
                      }
                      Resource resourceKey = getResourceKey(sIRequest, resourceType);
 -                    boolean isConfiguration = isConfiguration(orchFlows);
 -                    if (isConfiguration && !requestAction.equalsIgnoreCase(CREATEINSTANCE)) {
 +                    if (isConfiguration(orchFlows) && !requestAction.equalsIgnoreCase(CREATEINSTANCE)) {
                          List<ExecuteBuildingBlock> configBuildingBlocks = getConfigBuildingBlocks(
                                  new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest).setOrchFlows(orchFlows)
                                          .setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
                      logger.info("Found {}", foundObjects);
  
                      if (orchFlows == null || orchFlows.isEmpty()) {
 -                        orchFlows = queryNorthBoundRequestCatalogDb(execution, requestAction, resourceType, aLaCarte,
 +                        orchFlows = queryNorthBoundRequestCatalogDb(execution, requestAction, resourceType, isALaCarte,
                                  cloudOwner, serviceType);
                      }
                      boolean vnfReplace = false;
  
      protected void traverseNetworkCollection(DelegateExecution execution, List<Resource> resourceList,
              org.onap.so.db.catalog.beans.Service service) {
-         if (isVnfCustomizationsEmpty(service)) {
-             List<CollectionResourceCustomization> customizations = service.getCollectionResourceCustomizations();
-             if (customizations.isEmpty()) {
-                 logger.debug("No Collections found. CollectionResourceCustomization list is empty.");
-             } else {
-                 CollectionResourceCustomization collectionResourceCustomization =
-                         findCatalogNetworkCollection(execution, service);
-                 traverseNetworkCollectionResourceCustomization(resourceList, collectionResourceCustomization);
-             }
-             traverseNetworkCollectionCustomization(resourceList, service);
-         } else {
+         if (isVnfCustomizationsInTheService(service)) {
              buildAndThrowException(execution,
                      "Cannot orchestrate Service-Macro-Create without user params with a vnf. Please update ASDC model for new macro orchestration support or add service_recipe records to route to old macro flows");
          }
+         List<CollectionResourceCustomization> customizations = service.getCollectionResourceCustomizations();
+         if (customizations.isEmpty()) {
+             logger.debug("No Collections found. CollectionResourceCustomization list is empty.");
+         } else {
+             CollectionResourceCustomization collectionResourceCustomization =
+                     findCatalogNetworkCollection(execution, service);
+             traverseNetworkCollectionResourceCustomization(resourceList, collectionResourceCustomization);
+         }
+         traverseNetworkCollectionCustomization(resourceList, service);
      }
  
      private void traverseNetworkCollectionResourceCustomization(List<Resource> resourceList,
              }
          }
          logger.debug("minNetworks: {}", minNetworks);
+         CollectionNetworkResourceCustomization collectionNetworkResourceCust =
+                 getCollectionNetworkResourceCustomization(collectionResourceCustomization, instanceGroup);
+         for (int i = 0; i < minNetworks; i++) {
+             if (collectionNetworkResourceCust != null && collectionInstCust != null) {
+                 Resource resource = new Resource(WorkflowType.VIRTUAL_LINK,
+                         collectionNetworkResourceCust.getModelCustomizationUUID(), false);
+                 resource.setVirtualLinkKey(Integer.toString(i));
+                 resourceList.add(resource);
+             }
+         }
+     }
+     private CollectionNetworkResourceCustomization getCollectionNetworkResourceCustomization(
+             CollectionResourceCustomization collectionResourceCustomization, InstanceGroup instanceGroup) {
          CollectionNetworkResourceCustomization collectionNetworkResourceCust = null;
          for (CollectionNetworkResourceCustomization collectionNetworkTemp : instanceGroup
                  .getCollectionNetworkResourceCustomizations()) {
                  break;
              }
          }
-         for (int i = 0; i < minNetworks; i++) {
-             if (collectionNetworkResourceCust != null && collectionInstCust != null) {
-                 Resource resource = new Resource(WorkflowType.VIRTUAL_LINK,
-                         collectionNetworkResourceCust.getModelCustomizationUUID(), false);
-                 resource.setVirtualLinkKey(Integer.toString(i));
-                 resourceList.add(resource);
-             }
-         }
+         return collectionNetworkResourceCust;
      }
  
      private boolean collectionResourceCustomizationShouldNotBeProcessed(List<Resource> resourceList,
                  .collect(Collectors.toList()).isEmpty());
      }
  
-     private boolean isVnfCustomizationsEmpty(org.onap.so.db.catalog.beans.Service service) {
-         return service.getVnfCustomizations() == null || service.getVnfCustomizations().isEmpty();
+     private boolean isVnfCustomizationsInTheService(org.onap.so.db.catalog.beans.Service service) {
+         return !(service.getVnfCustomizations() == null || service.getVnfCustomizations().isEmpty());
      }
  
      protected void traverseAAIService(DelegateExecution execution, List<Resource> resourceList, String resourceId,