Miscellaneous fixes 17/75717/1
authorBenjamin, Max (mb388a) <mb388a@us.att.com>
Sat, 12 Jan 2019 02:54:58 +0000 (21:54 -0500)
committerBenjamin, Max (mb388a) <mb388a@us.att.com>
Sat, 12 Jan 2019 02:55:51 +0000 (21:55 -0500)
updated common pom to use aai schema version 1.4.1
removed handle sync error from SDNCHandler bpmn flow
added mso-request-id to in mapping of delete vnf flows
moved temporary test file to temporary folder
Removed obsolete genericVnfNode parameter from updateGenericVnfNode
sorted vfmodules by base last for negative action reqs

Change-Id: I7a5018d67292cfaac8d923ac3bd9b27ed037be57
Issue-ID: SO-1382
Signed-off-by: Benjamin, Max (mb388a) <mb388a@us.att.com>
asdc-controller/src/test/java/org/onap/so/asdc/installer/bpmn/BpmnInstallerTest.java
asdc-controller/src/test/resources/ASDC/TestBB.bpmn [deleted file]
bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/UpdateAAIGenericVnf.groovy
bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVnfInfra.bpmn
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java
bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionTest.java

index 5d35ea3..c572097 100644 (file)
@@ -28,6 +28,9 @@ import static org.mockito.Mockito.mock;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 
 import javax.transaction.Transactional;
 
@@ -40,23 +43,31 @@ import org.apache.http.client.methods.HttpPost;
 import org.apache.http.message.BasicHttpResponse;
 import org.apache.http.message.BasicStatusLine;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
 
 @Transactional
 public class BpmnInstallerTest {
        
     private BpmnInstaller bpmnInstaller = new BpmnInstaller();
     
+    @Rule
+       public TemporaryFolder folder= new TemporaryFolder();
+
     @Before
     public void init() throws Exception {
-       System.setProperty("mso.config.path", "src/test/resources");
+       System.setProperty("mso.config.path", folder.getRoot().toString());
     }
     
     @Test
     public void buildMimeMultiPart_Test() throws Exception {
-       
+       Path tempDirectoryPath = Paths.get(folder.getRoot().toString(), "ASDC");
+       Path tempFilePath = Paths.get(tempDirectoryPath.toAbsolutePath().toString(), "TestBB.bpmn");
+       Files.createDirectories(tempDirectoryPath);
+       Files.createFile(tempFilePath);
        HttpEntity entity = bpmnInstaller.buildMimeMultipart("TestBB.bpmn");            
-       String mimeMultipartBodyFilePath = System.getProperty("mso.config.path") + "/mime-multipart-body.txt";
+       String mimeMultipartBodyFilePath = "src/test/resources" + "/mime-multipart-body.txt";
        
        File mimeMultipartBody = new File(mimeMultipartBodyFilePath);
        InputStream expectedContent = new FileInputStream(mimeMultipartBody);
@@ -70,7 +81,7 @@ public class BpmnInstallerTest {
     public void installBpmn_Test() throws Exception {
        HttpResponse response = new BasicHttpResponse(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 200, ""));
        HttpClient httpClient = mock(HttpClient.class);
-       String csarPath = System.getProperty("mso.config.path") + "/resource-examples/WorkflowBpmn/service-CxSvc-csar.csar";
+       String csarPath = "src/test/resources" + "/resource-examples/WorkflowBpmn/service-CxSvc-csar.csar";
        doReturn(response).when(httpClient).execute(any(HttpPost.class));
        bpmnInstaller.installBpmn(csarPath);
     }
diff --git a/asdc-controller/src/test/resources/ASDC/TestBB.bpmn b/asdc-controller/src/test/resources/ASDC/TestBB.bpmn
deleted file mode 100644 (file)
index 47d1f6e..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0">
-  <bpmn:process id="TestBB" name="TestBB" isExecutable="true">
-    <bpmn:startEvent id="StartEvent_1" name="Start">
-      <bpmn:outgoing>SequenceFlow_1owu825</bpmn:outgoing>
-    </bpmn:startEvent>
-    <bpmn:endEvent id="EndEvent_06wodhm" name="End">
-      <bpmn:incoming>SequenceFlow_1gwcdup</bpmn:incoming>
-    </bpmn:endEvent>
-    <bpmn:sequenceFlow id="SequenceFlow_1owu825" sourceRef="StartEvent_1" targetRef="FisrtTask" />
-    <bpmn:sequenceFlow id="SequenceFlow_1gwcdup" sourceRef="FisrtTask" targetRef="EndEvent_06wodhm" />
-    <bpmn:scriptTask id="FisrtTask" name="FirstTask" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1owu825</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1gwcdup</bpmn:outgoing>
-      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-DoCreateVnf createVnf = new DoCreateVnf()
-createVnf.preProcessRequest(execution)]]></bpmn:script>
-    </bpmn:scriptTask>
-  </bpmn:process>
-  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="TestBB">
-      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
-        <dc:Bounds x="217" y="171" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="223" y="207" width="23" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_06wodhm_di" bpmnElement="EndEvent_06wodhm">
-        <dc:Bounds x="630" y="171" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="638" y="207" width="19" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1owu825_di" bpmnElement="SequenceFlow_1owu825">
-        <di:waypoint xsi:type="dc:Point" x="253" y="189" />
-        <di:waypoint xsi:type="dc:Point" x="390" y="189" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="322" y="174" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1gwcdup_di" bpmnElement="SequenceFlow_1gwcdup">
-        <di:waypoint xsi:type="dc:Point" x="490" y="189" />
-        <di:waypoint xsi:type="dc:Point" x="630" y="189" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="560" y="174" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0u50zcm_di" bpmnElement="FisrtTask">
-        <dc:Bounds x="390" y="149" width="100" height="80" />
-      </bpmndi:BPMNShape>
-    </bpmndi:BPMNPlane>
-  </bpmndi:BPMNDiagram>
-</bpmn:definitions>
index 5eb72bb..0cabcf6 100644 (file)
@@ -183,7 +183,7 @@ public class UpdateAAIGenericVnf extends AbstractServiceTaskProcessor {
                                }
 
                                // Construct payload
-                               personaModelVersionEntry = updateGenericVnfNode(origRequest, genericVnfNode, 'model-version-id')
+                               personaModelVersionEntry = updateGenericVnfNode(origRequest, 'model-version-id')
                        }
 
                        // Handle ipv4-oam-address
@@ -191,7 +191,7 @@ public class UpdateAAIGenericVnf extends AbstractServiceTaskProcessor {
                        String ipv4OamAddressEntry = ""
                        if (ipv4OamAddress != null) {
                                // Construct payload
-                               ipv4OamAddressEntry = updateGenericVnfNode(origRequest, genericVnfNode, 'ipv4-oam-address')
+                               ipv4OamAddressEntry = updateGenericVnfNode(origRequest, 'ipv4-oam-address')
                        }
 
                        // Handle management-v6-address
@@ -199,7 +199,7 @@ public class UpdateAAIGenericVnf extends AbstractServiceTaskProcessor {
                        String managementV6AddressEntry = ""
                        if (managementV6Address != null) {
                                // Construct payload
-                               managementV6AddressEntry = updateGenericVnfNode(origRequest, genericVnfNode, 'management-v6-address')
+                               managementV6AddressEntry = updateGenericVnfNode(origRequest, 'management-v6-address')
                        }
                        
                        // Handle orchestration-status
@@ -207,7 +207,7 @@ public class UpdateAAIGenericVnf extends AbstractServiceTaskProcessor {
                        String orchestrationStatusEntry = ""
                        if (orchestrationStatus != null) {
                                // Construct payload
-                               orchestrationStatusEntry = updateGenericVnfNode(origRequest, genericVnfNode, 'orchestration-status')
+                               orchestrationStatusEntry = updateGenericVnfNode(origRequest, 'orchestration-status')
                        }
 
                        def payload = """
@@ -243,7 +243,7 @@ public class UpdateAAIGenericVnf extends AbstractServiceTaskProcessor {
         * @param genericVnf Current Generic VNF retrieved from AAI.
         * @param element Name of element to be inserted.
         */
-       public String updateGenericVnfNode(String origRequest, Node genericVnfNode, String elementName) {
+       public String updateGenericVnfNode(String origRequest, String elementName) {
 
                if (!utils.nodeExists(origRequest, elementName)) {
                        return ""
index 6092de6..3cb879a 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_9MhrcHqVEea26OhQB97uCQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_9MhrcHqVEea26OhQB97uCQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="DeleteVnfInfra" name="DeleteVnfInfra" isExecutable="true">
     <bpmn2:startEvent id="StartEvent_1">
       <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
@@ -107,6 +107,7 @@ deleteVnf.prepareCompletionHandlerRequest(execution)]]></bpmn2:script>
         <camunda:out source="WorkflowException" target="WorkflowException" />
         <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
         <camunda:in source="DELVI_vnfId" target="vnfId" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_00bhxtl</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1f56g06</bpmn2:outgoing>
@@ -134,6 +135,7 @@ deleteVnf.prepareCompletionHandlerRequest(execution)]]></bpmn2:script>
         <camunda:in source="DELVI_serviceInstanceId" target="serviceInstanceId" />
         <camunda:in source="DELVI_cloudConfiguration" target="cloudConfiguration" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_00o02cv</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0dy2xw0</bpmn2:outgoing>
index 10ee13e..50f2091 100644 (file)
@@ -344,6 +344,18 @@ public class WorkflowAction {
                }
                return vfModuleResources;
        }
+       
+       protected List<Resource> sortVfModulesByBaseLast(List<Resource> vfModuleResources) {
+               int count = 0;
+               for(Resource resource : vfModuleResources){
+                       if(resource.isBaseVfModule()){
+                               Collections.swap(vfModuleResources, vfModuleResources.size()-1, count);
+                               break;
+               }
+                       count++;
+               }
+               return vfModuleResources;
+       }
 
        private void updateResourceIdsFromAAITraversal(List<ExecuteBuildingBlock> flowsToExecute,
                        List<Resource> resourceCounter, List<Pair<WorkflowType, String>> aaiResourceIds, String serviceInstanceId) {
@@ -969,8 +981,14 @@ public class WorkflowAction {
                                                        requestAction, aLaCarte, vnfType, workflowResourceIds, requestDetails, true, resource.getVirtualLinkKey(), false));
                                }
                        } else if (orchFlow.getFlowName().contains(VFMODULE)) {
-                               List<Resource> vfModuleResourcesSorted = sortVfModulesByBaseFirst(resourceCounter.stream().filter(x -> WorkflowType.VFMODULE == x.getResourceType())
+                               List<Resource> vfModuleResourcesSorted = null;
+                               if(requestAction.equals("createInstance")||requestAction.equals("assignInstance")||requestAction.equals("activateInstance")){
+                                       vfModuleResourcesSorted = sortVfModulesByBaseFirst(resourceCounter.stream().filter(x -> WorkflowType.VFMODULE == x.getResourceType())
                                                .collect(Collectors.toList()));
+                               }else{
+                                       vfModuleResourcesSorted = sortVfModulesByBaseLast(resourceCounter.stream().filter(x -> WorkflowType.VFMODULE == x.getResourceType())
+                                                       .collect(Collectors.toList()));
+                               }
                                for (int i = 0; i < vfModuleResourcesSorted.size(); i++) {
                                        flowsToExecute.add(buildExecuteBuildingBlock(orchFlow, requestId, vfModuleResourcesSorted.get(i), apiVersion, resourceId,
                                                        requestAction, aLaCarte, vnfType, workflowResourceIds, requestDetails, false, null, false));
index 5699c94..72f0ce4 100644 (file)
@@ -1200,6 +1200,24 @@ public class WorkflowActionTest extends BaseTaskTest {
                assertEquals("111",result.get(2).getResourceId());
        }
        
+       @Test
+       public void sortVfModulesByBaseLastTest(){
+               List<Resource> resources = new ArrayList<>();
+               Resource resource1 = new Resource(WorkflowType.VFMODULE,"111",false);
+               resource1.setBaseVfModule(true);
+               resources.add(resource1);
+               Resource resource2 = new Resource(WorkflowType.VFMODULE,"222",false);
+               resource2.setBaseVfModule(false);
+               resources.add(resource2);
+               Resource resource3 = new Resource(WorkflowType.VFMODULE,"333",false);
+               resource3.setBaseVfModule(false);
+               resources.add(resource3);
+               List<Resource> result = workflowAction.sortVfModulesByBaseLast(resources);
+               assertEquals("333",result.get(0).getResourceId());
+               assertEquals("222",result.get(1).getResourceId());
+               assertEquals("111",result.get(2).getResourceId());
+       }
+       
        private List<OrchestrationFlow> createFlowList (String... flowNames){
                List<OrchestrationFlow> result = new ArrayList<>();
                for(String flowName : flowNames){