[SO] Create changes for SO-API and BPMN-INFRA to support CNF's through ASD
[so.git] / bpmn / so-bpmn-tasks / src / main / java / org / onap / so / bpmn / infrastructure / workflow / tasks / OrchestrationStatusValidator.java
index e2dd73f..b9d0678 100644 (file)
@@ -11,9 +11,9 @@
  * 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
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
 package org.onap.so.bpmn.infrastructure.workflow.tasks;
 
-import java.util.EnumSet;
-import java.util.Set;
 import org.onap.so.bpmn.common.BuildingBlockExecution;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.InstanceGroup;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
 import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB;
 import org.onap.so.client.exception.BBObjectNotFoundException;
@@ -45,6 +51,8 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.HttpClientErrorException;
+import java.util.EnumSet;
+import java.util.Set;
 
 @Component
 public class OrchestrationStatusValidator {
@@ -57,9 +65,6 @@ public class OrchestrationStatusValidator {
     private static final String ORCHESTRATION_VALIDATION_FAIL =
             "Orchestration Status Validation failed. ResourceType=(%s), TargetAction=(%s), OrchestrationStatus=(%s)";
     private static final String ORCHESTRATION_STATUS_VALIDATION_RESULT = "orchestrationStatusValidationResult";
-    private static final String ALACARTE = "aLaCarte";
-    private static final String MULTI_STAGE_DESIGN_OFF = "false";
-    private static final String MULTI_STAGE_DESIGN_ON = "true";
     private static final String RESOURCE_EXIST_STATUS_MESSAGE =
             "The %s was found to already exist, thus no new %s was created in the cloud via this request";
     private static final String RESOURCE_NOT_EXIST_STATUS_MESSAGE =
@@ -79,20 +84,11 @@ public class OrchestrationStatusValidator {
 
     /**
      * This method validate's the status of the OrchestrationStatus against the buildingBlockDetail ResourceType
-     *
-     * @param execution
      */
     public void validateOrchestrationStatus(BuildingBlockExecution execution) {
         try {
-            OrchestrationStatusValidationDirective previousOrchestrationStatusValidationResult =
-                    execution.getVariable(ORCHESTRATION_STATUS_VALIDATION_RESULT);
-
             execution.setVariable(ORCHESTRATION_STATUS_VALIDATION_RESULT, null);
-
-            boolean aLaCarte = (boolean) execution.getVariable(ALACARTE);
-
             String buildingBlockFlowName = execution.getFlowToBeCalled();
-
             BuildingBlockDetail buildingBlockDetail = catalogDbClient.getBuildingBlockDetail(buildingBlockFlowName);
 
             if (buildingBlockDetail == null) {
@@ -100,63 +96,10 @@ public class OrchestrationStatusValidator {
                         String.format(BUILDING_BLOCK_DETAIL_NOT_FOUND, buildingBlockFlowName));
             }
 
-            OrchestrationStatus orchestrationStatus;
-
-            switch (buildingBlockDetail.getResourceType()) {
-                case SERVICE:
-                    org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance =
-                            extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
-                    orchestrationStatus = serviceInstance.getOrchestrationStatus();
-                    break;
-                case VNF:
-                    org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf genericVnf =
-                            extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
-                    orchestrationStatus = genericVnf.getOrchestrationStatus();
-                    break;
-                case VF_MODULE:
-                    org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
-                            extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
-                    orchestrationStatus = vfModule.getOrchestrationStatus();
-                    break;
-                case VOLUME_GROUP:
-                    org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
-                            extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID);
-                    orchestrationStatus = volumeGroup.getOrchestrationStatus();
-                    break;
-                case NETWORK:
-                    org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
-                            extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
-                    orchestrationStatus = network.getOrchestrationStatus();
-                    break;
-                case NETWORK_COLLECTION:
-                    org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInst =
-                            extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
-                    org.onap.so.bpmn.servicedecomposition.bbobjects.Collection networkCollection =
-                            serviceInst.getCollection();
-                    orchestrationStatus = networkCollection.getOrchestrationStatus();
-                    break;
-                case CONFIGURATION:
-                    org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration configuration =
-                            extractPojosForBB.extractByKey(execution, ResourceKey.CONFIGURATION_ID);
-                    orchestrationStatus = configuration.getOrchestrationStatus();
-                    break;
-                case INSTANCE_GROUP:
-                    org.onap.so.bpmn.servicedecomposition.bbobjects.InstanceGroup instanceGroup =
-                            extractPojosForBB.extractByKey(execution, ResourceKey.INSTANCE_GROUP_ID);
-                    orchestrationStatus = instanceGroup.getOrchestrationStatus();
-                    break;
-                case NO_VALIDATE:
-                    // short circuit and exit method
-                    execution.setVariable(ORCHESTRATION_STATUS_VALIDATION_RESULT,
-                            OrchestrationStatusValidationDirective.VALIDATION_SKIPPED);
-                    return;
-                default:
-                    // can't currently get here, so not tested. Added in case enum is expanded
-                    // without a change to this
-                    // code
-                    throw new OrchestrationStatusValidationException(
-                            String.format(UNKNOWN_RESOURCE_TYPE, buildingBlockFlowName,
-                                    buildingBlockDetail.getResourceType(), buildingBlockDetail.getTargetAction()));
+            OrchestrationStatus orchestrationStatus =
+                    getOrchestrationStatus(execution, buildingBlockFlowName, buildingBlockDetail);
+            if (buildingBlockDetail.getResourceType().equals(ResourceType.NO_VALIDATE)) {
+                return;
             }
 
             if (orchestrationStatus == null) {
@@ -199,6 +142,67 @@ public class OrchestrationStatusValidator {
         }
     }
 
+    private OrchestrationStatus getOrchestrationStatus(BuildingBlockExecution execution, String buildingBlockFlowName,
+            BuildingBlockDetail buildingBlockDetail)
+            throws BBObjectNotFoundException, OrchestrationStatusValidationException {
+        OrchestrationStatus orchestrationStatus = null;
+
+        switch (buildingBlockDetail.getResourceType()) {
+            case SERVICE:
+                ServiceInstance serviceInstance =
+                        extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+                orchestrationStatus = serviceInstance.getOrchestrationStatus();
+                break;
+            case VNF:
+            case CNF:
+                GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
+                orchestrationStatus = genericVnf.getOrchestrationStatus();
+                break;
+            case VF_MODULE:
+                VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
+                orchestrationStatus = vfModule.getOrchestrationStatus();
+                break;
+            case VOLUME_GROUP:
+                VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID);
+                orchestrationStatus = volumeGroup.getOrchestrationStatus();
+                break;
+            case NETWORK:
+                L3Network network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
+                orchestrationStatus = network.getOrchestrationStatus();
+                break;
+            case NETWORK_COLLECTION:
+                Collection networkCollection = getNetworkCollection(execution);
+                orchestrationStatus = networkCollection.getOrchestrationStatus();
+                break;
+            case CONFIGURATION:
+                Configuration configuration = extractPojosForBB.extractByKey(execution, ResourceKey.CONFIGURATION_ID);
+                orchestrationStatus = configuration.getOrchestrationStatus();
+                break;
+            case INSTANCE_GROUP:
+                InstanceGroup instanceGroup = extractPojosForBB.extractByKey(execution, ResourceKey.INSTANCE_GROUP_ID);
+                orchestrationStatus = instanceGroup.getOrchestrationStatus();
+                break;
+            case NO_VALIDATE:
+                // short circuit and exit method
+                execution.setVariable(ORCHESTRATION_STATUS_VALIDATION_RESULT,
+                        OrchestrationStatusValidationDirective.VALIDATION_SKIPPED);
+                break;
+            default:
+                // can't currently get here, so not tested. Added in case enum is expanded
+                // without a change to this
+                // code
+                throw new OrchestrationStatusValidationException(
+                        String.format(UNKNOWN_RESOURCE_TYPE, buildingBlockFlowName,
+                                buildingBlockDetail.getResourceType(), buildingBlockDetail.getTargetAction()));
+        }
+        return orchestrationStatus;
+    }
+
+    private Collection getNetworkCollection(BuildingBlockExecution execution) throws BBObjectNotFoundException {
+        ServiceInstance serviceInst = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+        return serviceInst.getCollection();
+    }
+
     private void updatedResourceStatus(BuildingBlockExecution execution, BuildingBlockDetail buildingBlockDetail) {
 
         if (cloudResources.contains(buildingBlockDetail.getResourceType())) {