Merge "Added canceling subsription to pnf-pnp workflow"
[so.git] / bpmn / MSOInfrastructureBPMN / src / main / groovy / org / openecomp / mso / bpmn / infrastructure / scripts / DoCreateResources.groovy
index 07f1376..ae75d54 100644 (file)
  
 package org.openecomp.mso.bpmn.infrastructure.scripts
 
+import org.codehaus.jackson.map.ObjectMapper
+import org.openecomp.mso.bpmn.infrastructure.properties.BPMNProperties
+
 import java.util.ArrayList
 import java.util.Iterator
 import java.util.List
-import javax.mail.Quota.Resource
 import org.apache.commons.lang3.StringUtils
 import org.apache.http.HttpResponse
 import org.camunda.bpm.engine.delegate.DelegateExecution
@@ -41,8 +43,11 @@ import org.openecomp.mso.bpmn.common.scripts.CatalogDbUtils
 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
 import org.openecomp.mso.bpmn.core.domain.AllottedResource
 import org.openecomp.mso.bpmn.core.domain.NetworkResource
+import org.openecomp.mso.bpmn.core.domain.Resource
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition
 import org.openecomp.mso.bpmn.core.domain.VnfResource
 import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.bpmn.common.resource.ResourceRequestBuilder
 
 /**
  * This groovy class supports the <class>DoCreateResources.bpmn</class> process.
@@ -66,6 +71,7 @@ public class DoCreateResources extends AbstractServiceTaskProcessor
 {
        ExceptionUtil exceptionUtil = new ExceptionUtil()
        JsonUtils jsonUtil = new JsonUtils()
+       CatalogDbUtils cutils = new CatalogDbUtils()
 
     public void preProcessRequest(DelegateExecution execution)
     {
@@ -88,57 +94,94 @@ public class DoCreateResources extends AbstractServiceTaskProcessor
         utils.log("INFO", " ***** Exit preProcessRequest *****", isDebugEnabled)
     }
     
-    public void sequenceResoure(Object execution)
+    public void sequenceResoure(DelegateExecution execution)
     {
         def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
         utils.log("INFO", "======== Start sequenceResoure Process ======== ", isDebugEnabled)
         
         String serviceModelUUID = execution.getVariable("modelUuid")      
                
-        List<Resource> addResourceList = execution.getVariable("addResourceList")        
+        List<Resource> addResourceList = execution.getVariable("addResourceList")
+        List<NetworkResource> networkResourceList = new ArrayList<NetworkResource>()
+
+        List<Resource> sequencedResourceList = new ArrayList<Resource>()
+        def resourceSequence = BPMNProperties.getResourceSequenceProp()
 
-        //we use VF to define a network service
+        if(resourceSequence != null) {
+            // sequence is defined in config file
+            for (resourceType in resourceSequence) {
+                for (resource in addResourceList) {
+                    if (StringUtils.containsIgnoreCase(resource.getModelInfo().getModelName(), resourceType)) {
+                        sequencedResourceList.add(resource)
+
+                        if (resource instanceof NetworkResource) {
+                            networkResourceList.add(resource)
+                        }
+                    }
+                }
+            }
+        } else {
+
+        //define sequenced resource list, we deploy vf first and then network and then ar
+        //this is defaule sequence
         List<VnfResource> vnfResourceList = new ArrayList<VnfResource>()
-        //here wan is defined as a network resource
-        List<NetworkResource> networkResourceList = new ArrayList<NetworkResource>()
-        //allotted resource      
         List<AllottedResource> arResourceList = new ArrayList<AllottedResource>()
 
-        //define sequenced resource list, we deploy vf first and then network and then ar 
-        //this is defaule sequence
-        List<Resource> sequencedResourceList = new ArrayList<Resource>()
         for (Resource rc : addResourceList){
-        if (rc instanceof VnfResource) {
+            if (rc instanceof VnfResource) {
                 vnfResourceList.add(rc)
             } else if (rc instanceof NetworkResource) {
-                NetworkResource.add(rc)
+                networkResourceList.add(rc)
             } else if (rc instanceof AllottedResource) {
-                AllottedResource.add(rc)
+                arResourceList.add(rc)
             }
-        }        
+        }
         sequencedResourceList.addAll(vnfResourceList)
         sequencedResourceList.addAll(networkResourceList)
         sequencedResourceList.addAll(arResourceList)
-        
+        }
+
         String isContainsWanResource = networkResourceList.isEmpty() ? "false" : "true"
         execution.setVariable("isContainsWanResource", isContainsWanResource)
         execution.setVariable("currentResourceIndex", 0)
         execution.setVariable("sequencedResourceList", sequencedResourceList)
         utils.log("INFO", "sequencedResourceList: " + sequencedResourceList, isDebugEnabled) 
         utils.log("INFO", "======== COMPLETED sequenceResoure Process ======== ", isDebugEnabled)
-    }   
+    }
+
+    public prepareServiceTopologyRequest(DelegateExecution execution) {
+
+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+        utils.log("INFO", "======== Start prepareServiceTopologyRequest Process ======== ", isDebugEnabled)
+
+        String serviceDecompose = execution.getVariable("serviceDecomposition")
+
+        execution.setVariable("operationType", "create")
+        execution.setVariable("resourceType", "")
+
+        String serviceInvariantUuid = jsonUtil.getJsonValue(serviceDecompose, "serviceResources.modelInfo.modelInvariantUuid")
+        String serviceUuid = jsonUtil.getJsonValue(serviceDecompose, "serviceResources.modelInfo.modelUuid")
+        String serviceModelName = jsonUtil.getJsonValue(serviceDecompose, "serviceResources.modelInfo.modelName")
+
+        execution.setVariable("modelInvariantUuid", serviceInvariantUuid)
+        execution.setVariable("modelUuid", serviceUuid)
+        execution.setVariable("serviceModelName", serviceModelName)
+
+        utils.log("INFO", "======== End prepareServiceTopologyRequest Process ======== ", isDebugEnabled)
+    }
    
-    public void getCurrentResoure(execution){
+    public void getCurrentResoure(DelegateExecution execution){
            def isDebugEnabled=execution.getVariable("isDebugLogEnabled")   
         utils.log("INFO", "======== Start getCurrentResoure Process ======== ", isDebugEnabled)    
            def currentIndex = execution.getVariable("currentResourceIndex")
            List<Resource> sequencedResourceList = execution.getVariable("sequencedResourceList")  
            Resource currentResource = sequencedResourceList.get(currentIndex)
+        execution.setVariable("resourceType", currentResource.getModelInfo().getModelName())
            utils.log("INFO", "Now we deal with resouce:" + currentResource.getModelInfo().getModelName(), isDebugEnabled)  
         utils.log("INFO", "======== COMPLETED getCurrentResoure Process ======== ", isDebugEnabled)  
     }
     
-    public void parseNextResource(execution){
+    public void parseNextResource(DelegateExecution execution){
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
         utils.log("INFO", "======== Start parseNextResource Process ======== ", isDebugEnabled)    
         def currentIndex = execution.getVariable("currentResourceIndex")
@@ -152,62 +195,64 @@ public class DoCreateResources extends AbstractServiceTaskProcessor
         }
         utils.log("INFO", "======== COMPLETED parseNextResource Process ======== ", isDebugEnabled)       
     }    
-    
-     public void prepareResourceRecipeRequest(execution){
-         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")                 
-         utils.log("INFO", "======== Start prepareResourceRecipeRequest Process ======== ", isDebugEnabled) 
-         ResourceInput resourceInput = new ResourceInput()         
-         String serviceInstanceName = execution.getVariable("serviceInstanceName")
-         String resourceInstanceName = resourceType + "_" + serviceInstanceName
-         resourceInput.setResourceInstanceName(resourceInstanceName)
-         utils.log("INFO", "Prepare Resource Request resourceInstanceName:" + resourceInstanceName, isDebugEnabled)
-         String globalSubscriberId = execution.getVariable("globalSubscriberId")
-         String serviceType = execution.getVariable("serviceType")
-         String serviceInstanceId = execution.getVariable("serviceInstanceId")
-         String operationId = execution.getVariable("operationId")
-         String operationType = execution.getVariable("operationType")
-         resourceInput.setGlobalSubscriberId(globalSubscriberId)
-         resourceInput.setServiceType(serviceType)
-         resourceInput.setServiceInstanceId(serviceInstanceId)
-         resourceInput.setOperationId(operationId)
-         resourceInput.setOperationType(operationType);
-         def currentIndex = execution.getVariable("currentResourceIndex")
-         List<Resource> sequencedResourceList = execution.getVariable("sequencedResourceList")  
-         Resource currentResource = sequencedResourceList.get(currentIndex)
-         String resourceCustomizationUuid = currentResource.getModelInfo().getModelCustomizationUuid()
-         resourceInput.setResourceCustomizationUuid(resourceCustomizationUuid);
-         String resourceInvariantUuid = currentResource.getModelInfo().getModelInvariantUuid()
-         resourceInput.setResourceInvariantUuid(resourceInvariantUuid)
-         String resourceUuid = currentResource.getModelInfo().getModelUuid()
-         resourceInput.setResourceUuid(resourceUuid)
-         
-         String incomingRequest = execution.getVariable("uuiRequest")
-         //set the requestInputs from tempalte  To Be Done
-         String serviceModelUuid = execution.getVariable("modelUuid")
+
+        public void prepareResourceRecipeRequest(DelegateExecution execution){
+                def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+                utils.log("INFO", "======== Start prepareResourceRecipeRequest Process ======== ", isDebugEnabled)
+                ResourceInput resourceInput = new ResourceInput()
+                String serviceInstanceName = execution.getVariable("serviceInstanceName")
+         String resourceType = execution.getVariable("resourceType")
+                String resourceInstanceName = resourceType + "_" + serviceInstanceName
+                resourceInput.setResourceInstanceName(resourceInstanceName)
+                utils.log("INFO", "Prepare Resource Request resourceInstanceName:" + resourceInstanceName, isDebugEnabled)
+                String globalSubscriberId = execution.getVariable("globalSubscriberId")
+                String serviceType = execution.getVariable("serviceType")
+                String serviceInstanceId = execution.getVariable("serviceInstanceId")
+                String operationId = execution.getVariable("operationId")
+                String operationType = "createInstance"
+                resourceInput.setGlobalSubscriberId(globalSubscriberId)
+                resourceInput.setServiceType(serviceType)
+                resourceInput.setServiceInstanceId(serviceInstanceId)
+                resourceInput.setOperationId(operationId)
+                resourceInput.setOperationType(operationType);
+                def currentIndex = execution.getVariable("currentResourceIndex")
+                List<Resource> sequencedResourceList = execution.getVariable("sequencedResourceList")
+                Resource currentResource = sequencedResourceList.get(currentIndex)
+                resourceInput.setResourceModelInfo(currentResource.getModelInfo());
+                ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+                resourceInput.setServiceModelInfo(serviceDecomposition.getModelInfo());
+         def String resourceCustomizationUuid = currentResource.getModelInfo().getModelCustomizationUuid();
+                
+                String incomingRequest = execution.getVariable("uuiRequest")
+                //set the requestInputs from tempalte  To Be Done
+                String serviceModelUuid = jsonUtil.getJsonValue(incomingRequest,"service.serviceUuid")
          String serviceParameters = jsonUtil.getJsonValue(incomingRequest, "service.parameters")
-         String resourceParameters = ResourceRequestBuilder.buildResourceRequestParameters(execution, serviceModelUuid, resourceCustomizationUuid, serviceParameters)
-         resourceInput.setResourceParameters(resourceParameters)
-         execution.setVariable("resourceInput", resourceInput)
-         utils.log("INFO", "======== COMPLETED prepareResourceRecipeRequest Process ======== ", isDebugEnabled)      
-     }
-     
-     public void executeResourceRecipe(execution){
-         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")                 
-         utils.log("INFO", "======== Start executeResourceRecipe Process ======== ", isDebugEnabled) 
-         String requestId = execution.getVariable("msoRequestId")
-         String serviceInstanceId = execution.getVariable("serviceInstanceId")
-         String serviceType = execution.getVariable("serviceType")
-         ResourceInput resourceInput = execution.getVariable("resourceInput")
-         String requestAction = resourceInput.getOperationType()
-         JSONObject resourceRecipe = cutils.getResourceRecipe(execution, resourceInput.getResourceUuid(), requestAction)
-         String recipeUri = resourceRecipe.getString("orchestrationUri")
-         String recipeTimeOut = resourceRecipe.getString("recipeTimeout")
-         String recipeParamXsd = resourceRecipe.get("paramXSD")
-         HttpResponse resp = BpmnRestClient.post(recipeUri, requestId, recipeTimeout, requestAction, serviceInstanceId, serviceType, resourceInput.toString(), recipeParamXsd)
-         
-     }
+                String resourceParameters = ResourceRequestBuilder.buildResourceRequestParameters(execution, serviceModelUuid, resourceCustomizationUuid, serviceParameters)
+                resourceInput.setResourceParameters(resourceParameters)
+                execution.setVariable("resourceInput", resourceInput)
+                utils.log("INFO", "======== COMPLETED prepareResourceRecipeRequest Process ======== ", isDebugEnabled)
+        }
+        
+        public void executeResourceRecipe(DelegateExecution execution){
+                def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+                utils.log("INFO", "======== Start executeResourceRecipe Process ======== ", isDebugEnabled)
+                String requestId = execution.getVariable("msoRequestId")
+                String serviceInstanceId = execution.getVariable("serviceInstanceId")
+                String serviceType = execution.getVariable("serviceType")
+                ResourceInput resourceInput = execution.getVariable("resourceInput")
+                
+                // requestAction is action, not opertiontype
+                //String requestAction = resourceInput.getOperationType()
+                String requestAction = "createInstance"
+                JSONObject resourceRecipe = cutils.getResourceRecipe(execution, resourceInput.getResourceModelInfo().getModelUuid(), requestAction)
+         String recipeURL = BPMNProperties.getProperty("bpelURL", "http://mso:8080") + resourceRecipe.getString("orchestrationUri")
+                int recipeTimeOut = resourceRecipe.getInt("recipeTimeout")
+                String recipeParamXsd = resourceRecipe.get("paramXSD")
+                HttpResponse resp = BpmnRestClient.post(recipeURL, requestId, recipeTimeOut, requestAction, serviceInstanceId, serviceType, resourceInput.toString(), recipeParamXsd)
+         utils.log("INFO", "======== end executeResourceRecipe Process ======== ", isDebugEnabled)
+        }
     
-     public void postConfigRequest(execution){
+     public void postConfigRequest(DelegateExecution execution){
          //now do noting
      }
 }