Stability fixes 33/66233/2
authorBenjamin, Max (mb388a) <mb388a@us.att.com>
Wed, 12 Sep 2018 20:55:02 +0000 (16:55 -0400)
committerBenjamin, Max (mb388a) <mb388a@us.att.com>
Thu, 13 Sep 2018 19:42:46 +0000 (15:42 -0400)
sdnc now logs the full response message as a json
removed erroneous encoding of variables with full XML
Return created network from getVirtualLinkL3Network
added exception logger to workflowaction aai check
Check for null value for vnfcPorts before referencing it
Added test case for invalid camunda response
Changed to use updateStatus method
Added saving for currentActiveReq and test for 401 resp
Change JUnit to use expectedException and clean up unused items.
Add vfModuleId to the exception message for missing model info.
Report an error if VF Module model info is expected but is null.
- Just renamed the Cvnfc and Vnfc set names
- Updated code to check for duplicate VNFC's across multiple modules in
the same VNF.
- Removed commented out if statement line for ALLOTTED_RESOURCE
- Reinitialize the Cvnfc and Vnfc Sets each time we iterate the
VFModule loop.  This will avoid the concurrent modification exception.
Eliminated Ben from the sample request
Changed to use else if for null check
Added null check before catdb call and test case
Fix implementation of a call to VNF Adapter for DeleteVolumeGroupBB.
Update the method to no call save and do a put
Revert usage of PUT method, use save instead

Change-Id: I9f69fb68d0639c23b8e1de6931938119bd3ac54b
Issue-ID: SO-1032
Signed-off-by: Benjamin, Max (mb388a) <mb388a@us.att.com>
26 files changed:
adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/client/RequestDbClientPortChanger.java
adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/client/RequestsDbClientTest.java
asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/resource/ResourceRequestBuilder.java
bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetup.java
bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/common/WorkflowTest.java
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteVolumeGroupBB.bpmn
bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/subprocess/DeleteVolumeGroupBBTest.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterDeleteTasks.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/vnf/mapper/VnfAdapterVfModuleObjectMapper.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/VnfAdapterVolumeGroupResources.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/sdnc/SDNCClient.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/sdnc/mapper/GeneralTopologyObjectMapper.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/sdnc/mapper/VfModuleTopologyOperationRequestMapper.java
bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterDeleteTasksTest.java
bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/orchestration/VnfAdapterVolumeGroupResourcesTest.java
bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/sdnc/SDNCClientLogResponseTest.java [new file with mode: 0644]
bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/sdnc/mapper/VfModuleTopologyOperationRequestMapperTest.java
common/src/main/java/org/onap/so/client/RestTemplateConfig.java
mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/ServiceInstances.java
mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ServiceInstancesTest.java
mso-api-handlers/mso-api-handler-infra/src/test/resources/ServiceInstanceTest/DeleteVfModuleNoModelInvariantId.json [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/test/resources/__files/Camunda/TestBadResponse.json [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/test/resources/__files/Camunda/UnauthorizedResponse.json [new file with mode: 0644]
mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/client/RequestsDbClient.java

index c0d9955..bd15396 100644 (file)
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.so.adapters.requestsdb.client;
 
 
index e614588..f1269f4 100644 (file)
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.so.adapters.requestsdb.client;
 
 import org.junit.Before;
@@ -142,9 +162,12 @@ public class RequestsDbClientTest {
     @Test
     public void getInfraActiveRequestbyRequestIdTest(){
         InfraActiveRequests infraActiveRequestsResponse = requestsDbClient.getInfraActiveRequestbyRequestId(infraActiveRequests.getRequestId());
-        verifyInfraActiveRequests(infraActiveRequestsResponse);
+        verifyInfraActiveRequests(infraActiveRequestsResponse);       
+        infraActiveRequestsResponse = requestsDbClient.getInfraActiveRequestbyRequestId(infraActiveRequests.getRequestId());
+        
         assertNull(requestsDbClient.getInfraActiveRequestbyRequestId(UUID.randomUUID().toString()));
     }
+    
 
     @Test
     public void getOneByServiceIdAndOperationIdTest(){
@@ -166,4 +189,4 @@ public class RequestsDbClientTest {
 
         assertNull(requestsDbClient.getOneByServiceIdAndOperationId(UUID.randomUUID().toString(),operationStatus.getOperationId()));
     }
-}
\ No newline at end of file
+}
index f7b457c..1fca9d3 100644 (file)
@@ -459,7 +459,6 @@ public class ToscaResourceInstaller {
                
                logger.debug("VF Category is : " + vfCustomizationCategory);
                
-               //if (!vfCustomizationCategory.equalsIgnoreCase(ALLOTTED_RESOURCE))
                if(vfResourceStructure.getVfModuleStructure() != null && !vfResourceStructure.getVfModuleStructure().isEmpty())
                {
 
@@ -479,9 +478,9 @@ public class ToscaResourceInstaller {
                        
                                VnfResourceCustomization vnfResource = createVnfResource(nodeTemplate, toscaResourceStruct, service);
                                
-                               Set<CvnfcCustomization> cvnfcCustomizations = new HashSet<CvnfcCustomization>();
-                               Set<VnfcCustomization> vnfcCustomizations = new HashSet<VnfcCustomization>();
-                               
+                               Set<CvnfcCustomization> existingCvnfcSet = new HashSet<CvnfcCustomization>(); 
+                               Set<VnfcCustomization> existingVnfcSet = new HashSet<VnfcCustomization>();
+                                                               
                                for (VfModuleStructure vfModuleStructure : vfResourceStructure.getVfModuleStructure()) {
                                        
                                        logger.debug("vfModuleStructure:" + vfModuleStructure.toString());
@@ -499,7 +498,7 @@ public class ToscaResourceInstaller {
                                                    findFirst();
                                        if(matchingObject.isPresent()){
                                                VfModuleCustomization vfModuleCustomization = createVFModuleResource(matchingObject.get(), nodeTemplate, toscaResourceStruct, 
-                                                                                                                                                                                        vfResourceStructure,vfMetadata, vnfResource, service, cvnfcCustomizations, vnfcCustomizations);
+                                                                                                                                                                                        vfResourceStructure,vfMetadata, vnfResource, service, existingCvnfcSet, existingVnfcSet);
                                                vfModuleCustomization.getVfModule().setVnfResources(vnfResource.getVnfResources());
                                        }else
                                                throw new Exception("Cannot find matching VFModule Customization for VF Module Metadata: " + vfMetadata.getVfModuleModelCustomizationUUID());
@@ -1193,7 +1192,8 @@ public class ToscaResourceInstaller {
        
        protected VfModuleCustomization createVFModuleResource(Group group, NodeTemplate nodeTemplate,
                        ToscaResourceStructure toscaResourceStructure, VfResourceStructure vfResourceStructure,
-                       IVfModuleData vfModuleData, VnfResourceCustomization vnfResource, Service service, Set<CvnfcCustomization> cvnfcCustomizations, Set<VnfcCustomization> vnfcCustomizations) {
+                       IVfModuleData vfModuleData, VnfResourceCustomization vnfResource, Service service, Set<CvnfcCustomization> existingCvnfcSet, Set<VnfcCustomization> existingVnfcSet) {
+               
                VfModuleCustomization vfModuleCustomization = findExistingVfModuleCustomization(vnfResource,
                                vfModuleData.getVfModuleModelCustomizationUUID());
                if(vfModuleCustomization == null){              
@@ -1216,29 +1216,32 @@ public class ToscaResourceInstaller {
                //******************************************************************************************************************
                //* Extract VFC's and CVFC's then add them to VFModule
                //******************************************************************************************************************
-                               
-               Set<VnfVfmoduleCvnfcConfigurationCustomization> vnfVfmoduleCvnfcConfigurationCustomizations = new HashSet<VnfVfmoduleCvnfcConfigurationCustomization>();
+               
+               Set<VnfVfmoduleCvnfcConfigurationCustomization> vnfVfmoduleCvnfcConfigurationCustomizations = new HashSet<VnfVfmoduleCvnfcConfigurationCustomization>();                
+               Set<CvnfcCustomization> cvnfcCustomizations = new HashSet<CvnfcCustomization>();
+               Set<VnfcCustomization> vnfcCustomizations = new HashSet<VnfcCustomization>();
 
                // Extract CVFC lists
                List<NodeTemplate> cvfcList = toscaResourceStructure.getSdcCsarHelper().getNodeTemplateBySdcType(nodeTemplate, SdcTypes.CVFC);
                                                
                for(NodeTemplate cvfcTemplate : cvfcList) {
-                                               
-                       CvnfcCustomization existingCvnfcCustomization = findExistingCvfc(cvnfcCustomizations, cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID));
+                                                                       
+                       CvnfcCustomization existingCvnfcCustomization = findExistingCvfc(existingCvnfcSet, cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID));
                        
                        if(existingCvnfcCustomization == null){
                        
                        //Extract associated VFC - Should always be just one
                        List<NodeTemplate> vfcList = toscaResourceStructure.getSdcCsarHelper().getNodeTemplateBySdcType(cvfcTemplate, SdcTypes.VFC);
-                       
-                       VnfcCustomization vnfcCustomization = new VnfcCustomization();
-                       VnfcCustomization existingVnfcCustomization = null;
-                       
+                                               
                        for(NodeTemplate vfcTemplate : vfcList) {
                                
-                               existingVnfcCustomization = findExistingVfc(vnfcCustomizations, vfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID));
-                                                                                                                       
-                               if(existingVnfcCustomization == null){
+                               VnfcCustomization vnfcCustomization = new VnfcCustomization();
+                               VnfcCustomization existingVnfcCustomization = null;
+                               
+                               existingVnfcCustomization = findExistingVfc(existingVnfcSet, vfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID));
+                                       
+                               // Only Add Abstract VNFC's to our DB, ignore all others
+                               if(existingVnfcCustomization == null && vfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_SUBCATEGORY).equalsIgnoreCase("Abstract")){
                                        vnfcCustomization.setModelCustomizationUUID(vfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID));
                                        vnfcCustomization.setModelInstanceName(vfcTemplate.getName());
                                        vnfcCustomization.setModelInvariantUUID(vfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID));
@@ -1252,31 +1255,36 @@ public class ToscaResourceInstaller {
                                        vnfcCustomization.setToscaNodeType(testNull(vfcTemplate.getType()));
                                        
                                        vnfcCustomizations.add(vnfcCustomization);
+                                       existingVnfcSet.add(vnfcCustomization);
                                }
-                               
-                       CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
-                       cvnfcCustomization.setModelCustomizationUUID(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID));
-                       cvnfcCustomization.setModelInstanceName(cvfcTemplate.getName());
-                       cvnfcCustomization.setModelInvariantUUID(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID));
-                       cvnfcCustomization.setModelName(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME));
-                       cvnfcCustomization.setModelUUID(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID));
-
-                       cvnfcCustomization.setModelVersion(
-                                       testNull(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION)));
-                       cvnfcCustomization.setDescription(
-                                       testNull(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION)));
-                       cvnfcCustomization.setToscaNodeType(testNull(cvfcTemplate.getType()));
-                       
-                       if(existingVnfcCustomization != null){
-                               cvnfcCustomization.setVnfcCustomization(existingVnfcCustomization);
-                       }else{
-                               cvnfcCustomization.setVnfcCustomization(vnfcCustomization);
-                       }
-                       
-                       cvnfcCustomization.setVfModuleCustomization(vfModuleCustomization);
-                       cvnfcCustomization.setVnfResourceCustomization(vnfResource);                                    
                        
-                       cvnfcCustomizations.add(cvnfcCustomization);
+                       // This check is needed incase the VFC subcategory is something other than Abstract.  In that case we want to skip adding that record to our DB.
+                       if(vnfcCustomization.getModelCustomizationUUID() != null){
+                               
+                               CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
+                               cvnfcCustomization.setModelCustomizationUUID(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID));
+                               cvnfcCustomization.setModelInstanceName(cvfcTemplate.getName());
+                               cvnfcCustomization.setModelInvariantUUID(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID));
+                               cvnfcCustomization.setModelName(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME));
+                               cvnfcCustomization.setModelUUID(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID));
+       
+                               cvnfcCustomization.setModelVersion(
+                                               testNull(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION)));
+                               cvnfcCustomization.setDescription(
+                                               testNull(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION)));
+                               cvnfcCustomization.setToscaNodeType(testNull(cvfcTemplate.getType()));
+                               
+                               if(existingVnfcCustomization != null){
+                                       cvnfcCustomization.setVnfcCustomization(existingVnfcCustomization);
+                               }else{
+                                       cvnfcCustomization.setVnfcCustomization(vnfcCustomization);
+                               }
+                               
+                               cvnfcCustomization.setVfModuleCustomization(vfModuleCustomization);
+                               cvnfcCustomization.setVnfResourceCustomization(vnfResource);                                    
+                               
+                               cvnfcCustomizations.add(cvnfcCustomization);
+                               existingCvnfcSet.add(cvnfcCustomization);
                        
                        //*****************************************************************************************************************************************
                        //* Extract Fabric Configuration
@@ -1308,11 +1316,13 @@ public class ToscaResourceInstaller {
                                vnfVfmoduleCvnfcConfigurationCustomizations.add(vnfVfmoduleCvnfcConfigurationCustomization);
                        }
                        
+                       }
+                       
                   }
                        
                  }
                        
-               }
+               } 
                
                vfModuleCustomization.setCvnfcCustomization(cvnfcCustomizations);
                vfModuleCustomization.setVnfVfmoduleCvnfcConfigurationCustomization(vnfVfmoduleCvnfcConfigurationCustomizations);
index deb2985..bb2ad95 100644 (file)
@@ -15,7 +15,6 @@
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- * Modifications Copyright (C) 2018 IBM.
  * ============LICENSE_END=========================================================
  */
 
index fc48996..6d5fb2f 100644 (file)
@@ -927,7 +927,9 @@ public class BBInputSetup implements JavaDelegate {
                if(collectionNetworkResourceCust != null) {
                        if((bbName.equalsIgnoreCase(AssignFlows.NETWORK_A_LA_CARTE.toString())
                                || bbName.equalsIgnoreCase(AssignFlows.NETWORK_MACRO.toString()))) {
-                               serviceInstance.getNetworks().add(createNetwork(lookupKeyMap, null, networkId, null));
+                               L3Network network = createNetwork(lookupKeyMap, null, networkId, null);                         
+                               serviceInstance.getNetworks().add(network);
+                               return network;
                        } else {
                                for (L3Network network : serviceInstance.getNetworks()) {
                                        if (network.getNetworkId().equalsIgnoreCase(networkId)) {
index 9dadb8b..041afe3 100644 (file)
@@ -141,7 +141,8 @@ public abstract class WorkflowTest {
         */
        protected static final String JSON = "application/json; charset=UTF-8";
 
-
+       private static final int timeout = 2000;
+       
        /**
         * Constructor.
         */
@@ -580,10 +581,27 @@ public abstract class WorkflowTest {
         *     reserve, assign, delete:ERR
         * </pre>
         * Errors are handled with junit assertions and will cause the test to fail.
+        * Uses the static/default timeout value for backward compatibility.
         * @param callbacks an object containing callback data for the program
         * @param program the program to execute
         */
        protected void injectSDNCCallbacks(CallbackSet callbacks, String program) {
+               injectSDNCCallbacks(callbacks, program, timeout);
+       }
+
+       /**
+        * Runs a program to inject SDNC callback data into the test environment.
+        * A program is essentially just a list of keys that identify callback data
+        * to be injected, in sequence. An example program:
+        * <pre>
+        *     reserve, assign, delete:ERR
+        * </pre>
+        * Errors are handled with junit assertions and will cause the test to fail.
+        * @param callbacks an object containing callback data for the program
+        * @param program the program to execute
+        * @param timeout a timeout value to wait for the callback
+        */
+       protected void injectSDNCCallbacks(CallbackSet callbacks, String program, int timeout) {
 
                String[] cmds = program.replaceAll("\\s+", "").split(",");
 
index 6fd7773..97ac113 100644 (file)
@@ -1,5 +1,5 @@
 <?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" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3">
+<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" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0">
   <bpmn:process id="DeleteVolumeGroupBB" name="DeleteVolumeGroupBB" isExecutable="true">
     <bpmn:startEvent id="DeleteVolumeGroupBB_Start" name="Start">
       <bpmn:outgoing>SequenceFlow_1wz1rfg</bpmn:outgoing>
@@ -9,15 +9,30 @@
       <bpmn:incoming>SequenceFlow_0mh0v9h</bpmn:incoming>
     </bpmn:endEvent>
     <bpmn:serviceTask id="UpdateVolumeGroupAAI" name="Update Volume Group A&#38;AI (AAI Assigned)" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusAssignedVolumeGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
-      <bpmn:incoming>SequenceFlow_13ngwev</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0fkan8t</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0mh0v9h</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_0mh0v9h" sourceRef="UpdateVolumeGroupAAI" targetRef="DeleteVolumeGroupBB_End" />
-    <bpmn:sequenceFlow id="SequenceFlow_13ngwev" sourceRef="DeleteVolumeGroupVnfAdapter" targetRef="UpdateVolumeGroupAAI" />
+    <bpmn:sequenceFlow id="SequenceFlow_13ngwev" sourceRef="DeleteVolumeGroupVnfAdapter" targetRef="VnfAdapter" />
     <bpmn:serviceTask id="DeleteVolumeGroupVnfAdapter" name="Delete Volume Group Vnf Adapter (AIC Delete)" camunda:expression="${VnfAdapterDeleteTasks.deleteVolumeGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1wz1rfg</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_13ngwev</bpmn:outgoing>
     </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0fkan8t" sourceRef="VnfAdapter" targetRef="UpdateVolumeGroupAAI" />
+    <bpmn:callActivity id="VnfAdapter" name="Vnf Adapter" calledElement="VnfAdapter">
+      <bpmn:extensionElements>
+        <camunda:in source="gBuildingBlockExecution" target="gBuildingBlockExecution" />
+        <camunda:inputOutput>
+          <camunda:outputParameter name="Output_3bec9ju" />
+        </camunda:inputOutput>
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="heatStackId" target="heatStackId" />
+        <camunda:in source="deleteVolumeGroupRequest" target="deleteVolumeGroupRequest" />
+        <camunda:in source="VNFREST_Request" target="VNFREST_Request" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_13ngwev</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0fkan8t</bpmn:outgoing>
+    </bpmn:callActivity>
   </bpmn:process>
   <bpmn:error id="Error_0pz4sdi" name="gDelegateError" errorCode="7000" />
   <bpmn:escalation id="Escalation_1hjulni" name="Escalation_2cgup2p" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_1k6463v_di" bpmnElement="DeleteVolumeGroupBB_End">
-        <dc:Bounds x="684" y="102" width="36" height="36" />
+        <dc:Bounds x="824" y="102" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="657" y="142" width="90" height="12" />
+          <dc:Bounds x="842" y="142" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0rytcj0_di" bpmnElement="UpdateVolumeGroupAAI">
-        <dc:Bounds x="525" y="80" width="100" height="80" />
+        <dc:Bounds x="665" y="80" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0mh0v9h_di" bpmnElement="SequenceFlow_0mh0v9h">
-        <di:waypoint xsi:type="dc:Point" x="625" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="684" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="765" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="824" y="120" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="609.5" y="98.5" width="90" height="13" />
+          <dc:Bounds x="795" y="99" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_13ngwev_di" bpmnElement="SequenceFlow_13ngwev">
         <di:waypoint xsi:type="dc:Point" x="488" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="525" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="526" y="120" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="506.5" y="99" width="0" height="12" />
+          <dc:Bounds x="507" y="105" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_1nrp0hb_di" bpmnElement="DeleteVolumeGroupVnfAdapter">
         <dc:Bounds x="388" y="80" width="100" height="80" />
       </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0fkan8t_di" bpmnElement="SequenceFlow_0fkan8t">
+        <di:waypoint xsi:type="dc:Point" x="626" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="665" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="646" y="105" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0li7q97_di" bpmnElement="VnfAdapter">
+        <dc:Bounds x="526" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn:definitions>
index d2f4db5..b30ea41 100644 (file)
@@ -35,7 +35,7 @@ public class DeleteVolumeGroupBBTest extends BaseBPMNTest {
        public void sunnyDayDeleteVolumeGroup_Test() throws InterruptedException {
                ProcessInstance pi = runtimeService.startProcessInstanceByKey("DeleteVolumeGroupBB", variables);
                assertThat(pi).isNotNull();
-               assertThat(pi).isStarted().hasPassedInOrder("DeleteVolumeGroupBB_Start", "DeleteVolumeGroupVnfAdapter", "UpdateVolumeGroupAAI", "DeleteVolumeGroupBB_End");
+               assertThat(pi).isStarted().hasPassedInOrder("DeleteVolumeGroupBB_Start", "DeleteVolumeGroupVnfAdapter", "VnfAdapter", "UpdateVolumeGroupAAI", "DeleteVolumeGroupBB_End");
                assertThat(pi).isEnded();
        }
 
@@ -45,7 +45,7 @@ public class DeleteVolumeGroupBBTest extends BaseBPMNTest {
                ProcessInstance pi = runtimeService.startProcessInstanceByKey("DeleteVolumeGroupBB", variables);
                assertThat(pi).isNotNull();
                assertThat(pi).isStarted()
-                               .hasPassedInOrder("DeleteVolumeGroupBB_Start", "DeleteVolumeGroupVnfAdapter", "UpdateVolumeGroupAAI")
+                               .hasPassedInOrder("DeleteVolumeGroupBB_Start", "DeleteVolumeGroupVnfAdapter", "VnfAdapter", "UpdateVolumeGroupAAI")
                                .hasNotPassed("DeleteVolumeGroupBB_End");
                assertThat(pi).isEnded();
        }
index 6ec9007..48b4ebb 100644 (file)
@@ -21,6 +21,7 @@
 package org.onap.so.bpmn.infrastructure.adapter.vnf.tasks;
 
 import org.onap.so.adapters.vnfrest.DeleteVfModuleRequest;
+import org.onap.so.adapters.vnfrest.DeleteVolumeGroupRequest;
 import org.onap.so.bpmn.common.BuildingBlockExecution;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
@@ -57,7 +58,9 @@ public class VnfAdapterDeleteTasks {
                        ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
                        VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
                        
-                       vnfAdapterVolumeGroupResources.deleteVolumeGroup(gBBInput.getRequestContext(), gBBInput.getCloudRegion(), serviceInstance, volumeGroup);
+                       DeleteVolumeGroupRequest deleteVolumeGroupRequest = vnfAdapterVolumeGroupResources.deleteVolumeGroupRequest(gBBInput.getRequestContext(), gBBInput.getCloudRegion(), serviceInstance, volumeGroup);
+                       execution.setVariable(VNFREST_REQUEST, deleteVolumeGroupRequest.toXmlString());
+                       execution.setVariable("deleteVolumeGroupRequest", "true");
                } catch (Exception ex) {
                        exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
                }
index 5809d16..a998f69 100644 (file)
@@ -727,6 +727,7 @@ public class WorkflowAction {
                        }
                        return generatedResourceId;
                } catch (Exception ex) {
+                       msoLogger.error(ex);
                        throw new IllegalStateException(
                                        "WorkflowAction was unable to verify if the instance name already exist in AAI.");
                }
index 515f04b..11a6941 100644 (file)
@@ -506,33 +506,35 @@ public class VnfAdapterVfModuleObjectMapper {
                
                String vmTypeKey = vnfcNetworkdata.getVnfcType();
                GenericResourceApiVnfcnetworkdataVnfcnetworkdataVnfcPorts vnfcPorts = vnfcNetworkdata.getVnfcPorts();
-               List<GenericResourceApiVnfcnetworkdataVnfcnetworkdataVnfcportsVnfcPort> vnfcPortList = vnfcPorts.getVnfcPort();
-               if (vnfcPortList != null) {                                                                     
-                       for(int portIdx = 0; portIdx < vnfcPortList.size(); portIdx++){
-                       
-                               GenericResourceApiVnfcnetworkdataVnfcnetworkdataVnfcportsVnfcPort vnfcPort = vnfcPortList.get(portIdx);
-                               GenericResourceApiSubInterfaceNetworkData vnicSubInterfaces = vnfcPort.getVnicSubInterfaces();
-                       
-                               String vnicSubInterfacesString = convertToString(vnicSubInterfaces);
-                               String  networkRoleKey = vnfcPort.getCommonSubInterfaceRole();  
-                               String subInterfaceKey = createVnfcSubInterfaceKey(vmTypeKey, networkDataIdx, networkRoleKey, portIdx);
-                               String globalSubInterfaceKey = createGlobalVnfcSubInterfaceKey(vmTypeKey, networkRoleKey, portIdx);
+               if (vnfcPorts != null) {
+                       List<GenericResourceApiVnfcnetworkdataVnfcnetworkdataVnfcportsVnfcPort> vnfcPortList = vnfcPorts.getVnfcPort();         
+                       if (vnfcPortList != null) {                                                                     
+                               for(int portIdx = 0; portIdx < vnfcPortList.size(); portIdx++){
                                
-                               buildVfModuleSubInterfacesCount(paramsMap, globalSubInterfaceKey, vnicSubInterfaces);
-                       
-                               buildVfModuleVlanTag(paramsMap, subInterfaceKey, vnicSubInterfacesString);
-                       
-                               buildVfModuleNetworkName(paramsMap, subInterfaceKey, vnicSubInterfacesString);
-                       
-                               buildVfModuleNetworkId(paramsMap, subInterfaceKey, vnicSubInterfacesString);
-
-                               buildVfModuleIpV4AddressHeatTemplate(paramsMap, subInterfaceKey, vnicSubInterfacesString);
-                       
-                               buildVfModuleIpV6AddressHeatTemplate(paramsMap, subInterfaceKey, vnicSubInterfacesString);
-                       
-                               buildVfModuleFloatingIpV4HeatTemplate(paramsMap, globalSubInterfaceKey, vnicSubInterfacesString);
-
-                               buildVfModuleFloatingIpV6HeatTemplate(paramsMap, globalSubInterfaceKey, vnicSubInterfacesString);
+                                       GenericResourceApiVnfcnetworkdataVnfcnetworkdataVnfcportsVnfcPort vnfcPort = vnfcPortList.get(portIdx);
+                                       GenericResourceApiSubInterfaceNetworkData vnicSubInterfaces = vnfcPort.getVnicSubInterfaces();
+                               
+                                       String vnicSubInterfacesString = convertToString(vnicSubInterfaces);
+                                       String  networkRoleKey = vnfcPort.getCommonSubInterfaceRole();  
+                                       String subInterfaceKey = createVnfcSubInterfaceKey(vmTypeKey, networkDataIdx, networkRoleKey, portIdx);
+                                       String globalSubInterfaceKey = createGlobalVnfcSubInterfaceKey(vmTypeKey, networkRoleKey, portIdx);
+                                       
+                                       buildVfModuleSubInterfacesCount(paramsMap, globalSubInterfaceKey, vnicSubInterfaces);
+                               
+                                       buildVfModuleVlanTag(paramsMap, subInterfaceKey, vnicSubInterfacesString);
+                               
+                                       buildVfModuleNetworkName(paramsMap, subInterfaceKey, vnicSubInterfacesString);
+                               
+                                       buildVfModuleNetworkId(paramsMap, subInterfaceKey, vnicSubInterfacesString);
+       
+                                       buildVfModuleIpV4AddressHeatTemplate(paramsMap, subInterfaceKey, vnicSubInterfacesString);
+                               
+                                       buildVfModuleIpV6AddressHeatTemplate(paramsMap, subInterfaceKey, vnicSubInterfacesString);
+                               
+                                       buildVfModuleFloatingIpV4HeatTemplate(paramsMap, globalSubInterfaceKey, vnicSubInterfacesString);
+       
+                                       buildVfModuleFloatingIpV6HeatTemplate(paramsMap, globalSubInterfaceKey, vnicSubInterfacesString);
+                               }
                        }
                }
        }
index 8655104..efbbeae 100644 (file)
@@ -22,7 +22,6 @@ package org.onap.so.client.orchestration;
 
 import org.onap.so.adapters.vnfrest.CreateVolumeGroupRequest;
 import org.onap.so.adapters.vnfrest.DeleteVolumeGroupRequest;
-import org.onap.so.adapters.vnfrest.DeleteVolumeGroupResponse;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
@@ -49,9 +48,7 @@ public class VnfAdapterVolumeGroupResources {
                return vnfAdapterObjectMapper.createVolumeGroupRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, genericVnf, volumeGroup, sdncVfModuleQueryResponse);
        }
        
-       public DeleteVolumeGroupResponse deleteVolumeGroup(RequestContext requestContext, CloudRegion cloudRegion, ServiceInstance serviceInstance, VolumeGroup volumeGroup) throws Exception {
-               DeleteVolumeGroupRequest deleteVolumeGroupRequest = vnfAdapterObjectMapper.deleteVolumeGroupRequestMapper(requestContext, cloudRegion, serviceInstance, volumeGroup);
-               msoLogger.debug(deleteVolumeGroupRequest.toString());
-               return vnfVolumeAdapterClient.deleteVNFVolumes(volumeGroup.getVolumeGroupId(), deleteVolumeGroupRequest);
+       public DeleteVolumeGroupRequest deleteVolumeGroupRequest(RequestContext requestContext, CloudRegion cloudRegion, ServiceInstance serviceInstance, VolumeGroup volumeGroup) throws Exception {
+               return vnfAdapterObjectMapper.deleteVolumeGroupRequestMapper(requestContext, cloudRegion, serviceInstance, volumeGroup);                
        }
 }
index 0061f50..a4b4039 100644 (file)
@@ -21,6 +21,7 @@
 package org.onap.so.client.sdnc;
 
 import java.util.LinkedHashMap;
+import java.util.Optional;
 
 import javax.ws.rs.core.UriBuilder;
 
@@ -35,6 +36,9 @@ import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Component;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
 @Component
 public class SDNCClient {
 
@@ -62,10 +66,25 @@ public class SDNCClient {
                        STOClient.setHttpHeader(httpHeader);
                        msoLogger.info("Running SDNC CLIENT for TargetUrl: " + targetUrl);
                        LinkedHashMap<?, ?> output = STOClient.post(jsonRequest, new ParameterizedTypeReference<LinkedHashMap<? ,?>>() {});
+                       Optional<String> sdncResponse = logSDNCResponse(output);
+                       if(sdncResponse.isPresent()){
+                               msoLogger.info(sdncResponse.get());
+                       }
                        msoLogger.info("Validating output...");
                        return sdnCommonTasks.validateSDNResponse(output);
        }
 
+       protected Optional<String> logSDNCResponse(LinkedHashMap<?, ?> output) {
+               ObjectMapper mapper = new ObjectMapper();
+               String sdncOutput = "";
+               try {
+                       sdncOutput = mapper.writeValueAsString(output);
+                       return Optional.of(sdncOutput);
+               } catch (JsonProcessingException e) {
+                       msoLogger.debug("Failed to map response from sdnc to json string for logging purposes.");
+               }
+               return Optional.empty();
+       }
 
        /**
         * 
index 53e7dc4..84f056d 100644 (file)
@@ -25,6 +25,7 @@ import org.onap.so.bpmn.servicedecomposition.bbobjects.*;
 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
 import org.onap.so.client.sdnc.beans.SDNCSvcAction;
 import org.springframework.stereotype.Component;
+import org.onap.so.client.exception.MapperException;
 
 @Component
 public class GeneralTopologyObjectMapper {
@@ -109,16 +110,21 @@ public class GeneralTopologyObjectMapper {
        /*
         * Build GenericResourceApiVfModuleinformationVfModuleInformation
         */
-       public GenericResourceApiVfmoduleinformationVfModuleInformation buildVfModuleInformation(VfModule vfModule, GenericVnf vnf, ServiceInstance serviceInstance, boolean includeModelInformation){
+       public GenericResourceApiVfmoduleinformationVfModuleInformation buildVfModuleInformation(VfModule vfModule, GenericVnf vnf, ServiceInstance serviceInstance, boolean includeModelInformation) throws MapperException {
                GenericResourceApiVfmoduleinformationVfModuleInformation vfModuleInformation = new GenericResourceApiVfmoduleinformationVfModuleInformation();
                if (includeModelInformation) {
-                       GenericResourceApiOnapmodelinformationOnapModelInformation onapModelInformation = new GenericResourceApiOnapmodelinformationOnapModelInformation();
-                       onapModelInformation.setModelInvariantUuid(vfModule.getModelInfoVfModule().getModelInvariantUUID());
-                       onapModelInformation.setModelName(vfModule.getModelInfoVfModule().getModelName());
-                       onapModelInformation.setModelVersion(vfModule.getModelInfoVfModule().getModelVersion());
-                       onapModelInformation.setModelUuid(vfModule.getModelInfoVfModule().getModelUUID());
-                       onapModelInformation.setModelCustomizationUuid(vfModule.getModelInfoVfModule().getModelCustomizationUUID());
-                       vfModuleInformation.setOnapModelInformation(onapModelInformation);
+                       if (vfModule.getModelInfoVfModule() == null) {
+                               throw new MapperException("VF Module model info is null for " + vfModule.getVfModuleId());
+                       }
+                       else {
+                               GenericResourceApiOnapmodelinformationOnapModelInformation onapModelInformation = new GenericResourceApiOnapmodelinformationOnapModelInformation();
+                               onapModelInformation.setModelInvariantUuid(vfModule.getModelInfoVfModule().getModelInvariantUUID());
+                               onapModelInformation.setModelName(vfModule.getModelInfoVfModule().getModelName());
+                               onapModelInformation.setModelVersion(vfModule.getModelInfoVfModule().getModelVersion());
+                               onapModelInformation.setModelUuid(vfModule.getModelInfoVfModule().getModelUUID());
+                               onapModelInformation.setModelCustomizationUuid(vfModule.getModelInfoVfModule().getModelCustomizationUUID());
+                               vfModuleInformation.setOnapModelInformation(onapModelInformation);
+                       }
                }
                if (vfModule.getModelInfoVfModule() != null) {
                        vfModuleInformation.setVfModuleType(vfModule.getModelInfoVfModule().getModelName());
index af670d1..7013a50 100644 (file)
@@ -30,6 +30,7 @@ import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
+import org.onap.so.client.exception.MapperException;
 import org.onap.so.client.sdnc.beans.SDNCSvcAction;
 import org.onap.so.client.sdnc.beans.SDNCSvcOperation;
 import org.onap.so.logger.MessageEnum;
@@ -58,7 +59,7 @@ public class VfModuleTopologyOperationRequestMapper {
 
        public GenericResourceApiVfModuleOperationInformation reqMapper(SDNCSvcOperation svcOperation,
                        SDNCSvcAction svcAction,  VfModule vfModule, VolumeGroup volumeGroup, GenericVnf vnf, ServiceInstance serviceInstance,
-                       Customer customer, CloudRegion cloudRegion, RequestContext requestContext, String sdncAssignResponse) {
+                       Customer customer, CloudRegion cloudRegion, RequestContext requestContext, String sdncAssignResponse) throws MapperException {
                GenericResourceApiVfModuleOperationInformation req = new GenericResourceApiVfModuleOperationInformation();
                
                boolean includeModelInformation = false;        
index 4ea11c2..3ff9ce6 100644 (file)
@@ -30,7 +30,7 @@ import org.camunda.bpm.engine.delegate.BpmnError;
 import org.junit.Before;
 import org.junit.Test;
 import org.onap.so.adapters.vnfrest.DeleteVfModuleRequest;
-import org.onap.so.adapters.vnfrest.DeleteVolumeGroupResponse;
+import org.onap.so.adapters.vnfrest.DeleteVolumeGroupRequest;
 import org.onap.so.bpmn.BaseTaskTest;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
@@ -95,20 +95,22 @@ public class VnfAdapterDeleteTasksTest extends BaseTaskTest{
        
        @Test
        public void test_deleteVolumeGroup() throws Exception {
-               DeleteVolumeGroupResponse deleteVolumeGroupResponse = new DeleteVolumeGroupResponse();
+               DeleteVolumeGroupRequest deleteVolumeGroupRequest = new DeleteVolumeGroupRequest();
+               deleteVolumeGroupRequest.setVolumeGroupId("volumeGroupId");
                
-               doReturn(deleteVolumeGroupResponse).when(vnfAdapterVolumeGroupResources).deleteVolumeGroup(requestContext, cloudRegion, serviceInstance, volumeGroup);
+               doReturn(deleteVolumeGroupRequest).when(vnfAdapterVolumeGroupResources).deleteVolumeGroupRequest(requestContext, cloudRegion, serviceInstance, volumeGroup);
                
                vnfAdapterDeleteTasks.deleteVolumeGroup(execution);
                
-               verify(vnfAdapterVolumeGroupResources, times(1)).deleteVolumeGroup(requestContext, cloudRegion, serviceInstance, volumeGroup);
+               verify(vnfAdapterVolumeGroupResources, times(1)).deleteVolumeGroupRequest(requestContext, cloudRegion, serviceInstance, volumeGroup);
+               assertEquals(execution.getVariable("VNFREST_Request"), deleteVolumeGroupRequest.toXmlString());
        }
        
        @Test
        public void deleteVolumeGroupExceptionTest() throws Exception {
                expectedException.expect(BpmnError.class);
                
-               doThrow(Exception.class).when(vnfAdapterVolumeGroupResources).deleteVolumeGroup(requestContext, cloudRegion, serviceInstance, volumeGroup);
+               doThrow(Exception.class).when(vnfAdapterVolumeGroupResources).deleteVolumeGroupRequest(requestContext, cloudRegion, serviceInstance, volumeGroup);
        
                vnfAdapterDeleteTasks.deleteVolumeGroup(execution);
        }
index ee0e60c..d582253 100644 (file)
@@ -110,13 +110,10 @@ public class VnfAdapterVolumeGroupResourcesTest  extends TestDataSetup {
                DeleteVolumeGroupRequest deleteVolumeGroupRequest = new DeleteVolumeGroupRequest();
                doReturn(deleteVolumeGroupRequest).when(MOCK_vnfAdapterObjectMapper).deleteVolumeGroupRequestMapper(requestContext, cloudRegion, serviceInstance, volumeGroup);
        
-               DeleteVolumeGroupResponse expectedDeleteVolumeGroupResponse = new DeleteVolumeGroupResponse();
-               doReturn(expectedDeleteVolumeGroupResponse).when(MOCK_vnfVolumeAdapterClient).deleteVNFVolumes(volumeGroup.getVolumeGroupId(), deleteVolumeGroupRequest);
+               DeleteVolumeGroupRequest expectedDeleteVolumeGroupRequest = new DeleteVolumeGroupRequest();             
+               DeleteVolumeGroupRequest actualDeleteVolumeGroupRequest = vnfAdapterVolumeGroupResources.deleteVolumeGroupRequest(requestContext, cloudRegion, serviceInstance, volumeGroup);           
                
-               DeleteVolumeGroupResponse actualDeleteVolumeGroupResponse = vnfAdapterVolumeGroupResources.deleteVolumeGroup(requestContext, cloudRegion, serviceInstance, volumeGroup);
-               
-               verify(MOCK_vnfVolumeAdapterClient, times(1)).deleteVNFVolumes(volumeGroup.getVolumeGroupId(), deleteVolumeGroupRequest);
                verify(MOCK_vnfAdapterObjectMapper, times(1)).deleteVolumeGroupRequestMapper(requestContext, cloudRegion, serviceInstance, volumeGroup);
-               assertThat(expectedDeleteVolumeGroupResponse, Matchers.sameBeanAs(actualDeleteVolumeGroupResponse));
+               assertThat(expectedDeleteVolumeGroupRequest, Matchers.sameBeanAs(actualDeleteVolumeGroupRequest));
        }
 }
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/sdnc/SDNCClientLogResponseTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/sdnc/SDNCClientLogResponseTest.java
new file mode 100644 (file)
index 0000000..e28c465
--- /dev/null
@@ -0,0 +1,43 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.client.sdnc;
+
+import static org.junit.Assert.*;
+
+import java.util.LinkedHashMap;
+import java.util.Optional;
+
+import org.junit.Test;
+
+public class SDNCClientLogResponseTest {
+
+       private SDNCClient sdncClient = new SDNCClient();
+
+    @Test
+    public void logSDNCResponseTest() {
+       LinkedHashMap<String, String> output = new LinkedHashMap<>();
+       output.put("response-code", "404");
+       output.put("response-message", "not found");
+       Optional<String> response = sdncClient.logSDNCResponse(output);
+       assertEquals(true, response.isPresent());
+       assertEquals("{\"response-code\":\"404\",\"response-message\":\"not found\"}",response.get());
+    }
+}
index b3999a7..04397c4 100644 (file)
@@ -29,7 +29,9 @@ import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.util.HashMap;
 
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.ExpectedException;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
@@ -41,6 +43,7 @@ import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoGenericVnf;
 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoServiceInstance;
 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
+import org.onap.so.client.exception.MapperException;
 import org.onap.so.client.sdnc.beans.SDNCSvcAction;
 import org.onap.so.client.sdnc.beans.SDNCSvcOperation;
 
@@ -50,6 +53,10 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 public class VfModuleTopologyOperationRequestMapperTest {
 
        private final static String JSON_FILE_LOCATION = "src/test/resources/__files/BuildingBlocks/";
+       private final static String ERRORMESSAGE = "VF Module model info is null for testVfModuleId";
+       
+       @Rule
+       public ExpectedException expectedException = ExpectedException.none();
 
        @Test
        public void assignGenericResourceApiVfModuleInformationTest() throws Exception {
@@ -220,5 +227,57 @@ public class VfModuleTopologyOperationRequestMapperTest {
                assertEquals("vnfModelCustomizationUuid", vfModuleSDNCrequest.getVnfInformation().getOnapModelInformation().getModelCustomizationUuid());
                assertEquals("vfModuleModelCustomizationUuid", vfModuleSDNCrequest.getVfModuleInformation().getOnapModelInformation().getModelCustomizationUuid());
        }
+       
+       @Test
+       public void reqMapperNoModelInfoTest() throws Exception {
+
+               // prepare and set service instance
+               ServiceInstance serviceInstance = new ServiceInstance();
+               serviceInstance.setServiceInstanceId("serviceInstanceId");
+               ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
+               modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
+               modelInfoServiceInstance.setModelName("serviceModelName");
+               modelInfoServiceInstance.setModelUuid("serviceModelUuid");
+               modelInfoServiceInstance.setModelVersion("serviceModelVersion");
+
+               serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
+               // prepare Customer object
+               Customer customer = new Customer();
+               customer.setGlobalCustomerId("globalCustomerId");
+               customer.setServiceSubscription(new ServiceSubscription());
+               // set Customer on service instance
+               customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
+               //
+               RequestContext requestContext = new RequestContext();
+               HashMap<String, String> userParams = new HashMap<String, String>();
+               userParams.put("key1", "value1");
+               requestContext.setUserParams(userParams);
+               requestContext.setProductFamilyId("productFamilyId");
+
+               GenericVnf vnf = new GenericVnf();
+               vnf.setVnfId("testVnfId");
+               vnf.setVnfType("testVnfType");
+               ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
+               modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
+               modelInfoGenericVnf.setModelName("vnfModelName");
+               modelInfoGenericVnf.setModelVersion("vnfModelVersion");
+               modelInfoGenericVnf.setModelUuid("vnfModelUuid");
+               modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
+               vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
+
+               VfModule vfModule = new VfModule();
+               vfModule.setVfModuleId("testVfModuleId");
+               vfModule.setVfModuleName("testVfModuleName");           
+               vfModule.setModelInfoVfModule(null);
+
+               CloudRegion cloudRegion = new CloudRegion();
+               
+               VfModuleTopologyOperationRequestMapper mapper = new VfModuleTopologyOperationRequestMapper();
+               expectedException.expect(MapperException.class);
+               expectedException.expectMessage(ERRORMESSAGE);
+               
+               mapper.reqMapper(SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, null, vnf, serviceInstance, customer,
+                       cloudRegion, requestContext, null);             
+       }
 
 }
index e71510e..ad83320 100644 (file)
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.so.client;
 
 import org.springframework.context.annotation.Bean;
index 60b07fd..5d9ad76 100644 (file)
@@ -663,14 +663,14 @@ public class ServiceInstances {
                                
 
                                // Get VF Module-specific base module indicator
-                               VfModule vfm;
+                               VfModule vfm = null;
 
                                String modelVersionId = modelInfo.getModelVersionId();
 
                                if(modelVersionId != null) {
                                        vfm = catalogDbClient.getVfModuleByModelUUID(modelVersionId);
-                               } else {
-                                       vfm = catalogDbClient.getVfModuleByModelInvariantUUIDAndModelVersion(modelInfo.getModelInvariantId(), modelInfo.getModelVersion());                                     
+                               } else if(modelInfo.getModelInvariantId() != null && modelInfo.getModelVersion() != null){
+                                       vfm = catalogDbClient.getVfModuleByModelInvariantUUIDAndModelVersion(modelInfo.getModelInvariantId(), modelInfo.getModelVersion());
                                }
 
                                if (vfm != null) {
@@ -831,9 +831,8 @@ public class ServiceInstances {
             ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_RESPONSE_ERROR, MsoLogger.ErrorCode.SchemaError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
             ValidateException validateException = new ValidateException.Builder("Exception caught mapping Camunda JSON response to object", HttpStatus.SC_INTERNAL_SERVER_ERROR, ErrorNumbers.SVC_BAD_PARAMETER).cause(e)
                         .errorInfo(errorLoggerInfo).build();
-            currentActiveReq.setRequestStatus(Status.FAILED.name());
-            currentActiveReq.setStatusMessage(validateException.getMessage());
-           throw validateException;
+            updateStatus(currentActiveReq, Status.FAILED, validateException.getMessage());
+            throw validateException;
         }
 
                // BPEL accepted the request, the request is in progress
@@ -850,8 +849,7 @@ public class ServiceInstances {
                                        ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_RESPONSE_ERROR, MsoLogger.ErrorCode.SchemaError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
                                        ValidateException validateException = new ValidateException.Builder("Exception caught mapping Camunda JSON response to object", HttpStatus.SC_NOT_ACCEPTABLE, ErrorNumbers.SVC_BAD_PARAMETER).cause(e)
                                            .errorInfo(errorLoggerInfo).build();
-                                       currentActiveReq.setRequestStatus(Status.FAILED.name());
-                                       currentActiveReq.setStatusMessage(validateException.getMessage());
+                                       updateStatus(currentActiveReq, Status.FAILED, validateException.getMessage());
                                        throw validateException;
                                }
                        
index e4ec850..cdb4c40 100644 (file)
@@ -1392,6 +1392,33 @@ public class ServiceInstancesTest extends BaseTest{
         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));        
     }
     @Test
+    public void deleteVfModuleNoModelInvariantId() throws IOException {
+        stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
+                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                        .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
+        
+        stubFor(get(urlMatching(".*/vnfComponentsRecipe/search/findFirstVnfComponentsRecipeByVfModuleModelUUIDAndVnfComponentTypeAndAction" +
+                "[?]vfModuleModelUUID=VNF-API-DEFAULT&vnfComponentType=vfModule&action=deleteInstance"))
+                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                        .withBody(getWiremockResponseForCatalogdb("vnfComponentRecipeDeleteVfModule_Response.json"))
+                        .withStatus(org.apache.http.HttpStatus.SC_OK)));
+
+        //expected response
+        ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
+        RequestReferences requestReferences = new RequestReferences();
+        requestReferences.setInstanceId("1882939");
+        expectedResponse.setRequestReferences(requestReferences);
+        uri = servInstanceuri + "v7" + "/serviceInstances/196b4a84-0858-4317-a1f6-497e2e52ae43/vnfs/36e4f902-ec32-451e-8d53-e3edc19e40a4/vfModules/09f3a38d-933f-450a-8784-9e6c4dec3f72";
+        ResponseEntity<String> response = sendRequest(inputStream("/DeleteVfModuleNoModelInvariantId.json"), uri, HttpMethod.DELETE);
+
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+
+        assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
+        ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
+        assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));        
+    }
+    @Test
     public void deactivateAndCloudDeleteVfModuleInstance() throws IOException {
         stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
@@ -1980,6 +2007,43 @@ public class ServiceInstancesTest extends BaseTest{
         RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
         assertEquals("Request Failed due to BPEL error with HTTP Status = 202{\"instanceId\": \"1882939\"}", realResponse.getServiceException().getText());
     }
+    @Test
+    public void unauthorizedBPELResponse() throws IOException{
+
+        ServiceRecipe serviceRecipe = new ServiceRecipe();
+        serviceRecipe.setOrchestrationUri("/mso/async/services/WorkflowActionBB");
+        serviceRecipe.setServiceModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
+        serviceRecipe.setAction(Action.createInstance.toString());
+        serviceRecipe.setId(1);
+        serviceRecipe.setRecipeTimeout(180);
+        Service defaultService = new Service();
+        defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
+           
+           stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
+                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                        .withBodyFile("Camunda/UnauthorizedResponse.json").withStatus(org.apache.http.HttpStatus.SC_UNAUTHORIZED)));
+
+        stubFor(get(urlMatching(".*/service/.*"))
+                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                        .withBody(mapper.writeValueAsString(defaultService))
+                        .withStatus(HttpStatus.SC_OK)));
+
+        stubFor(get(urlMatching(".*/serviceRecipe/search.*"))
+                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                        .withBody(mapper.writeValueAsString(serviceRecipe))
+                        .withStatus(HttpStatus.SC_OK)));
+        
+        uri = servInstanceuri + "v5/serviceInstances";
+        ResponseEntity<String> response = sendRequest(inputStream("/ServiceInstanceDefault.json"), uri, HttpMethod.POST);
+
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+        mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
+
+        assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
+        RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
+        assertEquals("Exception caught mapping Camunda JSON response to object", realResponse.getServiceException().getText());
+    }
 
     @Test
     public void invalidBPELResponse2() throws IOException{
@@ -2145,4 +2209,40 @@ public class ServiceInstancesTest extends BaseTest{
         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));        
         assertTrue(response.getBody().contains("1882939"));
     }
+    @Test
+    public void createServiceInstanceBadResponse() throws IOException{
+         ServiceRecipe serviceRecipe = new ServiceRecipe();
+          serviceRecipe.setOrchestrationUri("/mso/async/services/WorkflowActionBB");
+          serviceRecipe.setServiceModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
+          serviceRecipe.setAction(Action.createInstance.toString());
+          serviceRecipe.setId(1);
+          serviceRecipe.setRecipeTimeout(180);
+          Service defaultService = new Service();
+          defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
+           
+           stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
+                  .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                          .withBodyFile("Camunda/TestBadResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
+
+          stubFor(get(urlMatching(".*/service/.*"))
+                  .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                          .withBody(mapper.writeValueAsString(defaultService))
+                          .withStatus(HttpStatus.SC_OK)));
+
+          stubFor(get(urlMatching(".*/serviceRecipe/search.*"))
+                  .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                          .withBody(mapper.writeValueAsString(serviceRecipe))
+                          .withStatus(HttpStatus.SC_OK)));
+          
+          uri = servInstanceuri + "v5/serviceInstances";
+          ResponseEntity<String> response = sendRequest(inputStream("/ServiceInstanceDefault.json"), uri, HttpMethod.POST);
+
+          ObjectMapper mapper = new ObjectMapper();
+          mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+          mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
+
+          assertEquals(Response.Status.NOT_ACCEPTABLE.getStatusCode(), response.getStatusCode().value());
+          RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
+          assertEquals("Exception caught mapping Camunda JSON response to object", realResponse.getServiceException().getText());
+    }
 }
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/ServiceInstanceTest/DeleteVfModuleNoModelInvariantId.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/ServiceInstanceTest/DeleteVfModuleNoModelInvariantId.json
new file mode 100644 (file)
index 0000000..64c60b8
--- /dev/null
@@ -0,0 +1,23 @@
+{
+   "requestDetails":{
+      "modelInfo":{
+         "modelType":"vfModule",
+         "modelName":"InframsoVsamp1214..vSAMP12_base..module-0"
+      },
+      "cloudConfiguration":{
+         "lcpCloudRegionId":"mtn6",
+         "tenantId":"0422ffb57ba042c0800a29dc85ca70f8"
+      },
+      "requestInfo":{
+         "instanceName":"bdb-vSAMP12_14_1.0-VF-Base-1810-est01-VNF_API-10201",
+         "source":"VID",
+         "requestorId":"xxxxxx"
+      },
+      "requestParameters":{
+         "testApi":"VNF_API",
+         "userParams":[
+
+         ]
+      }
+   }
+}
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/__files/Camunda/TestBadResponse.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/__files/Camunda/TestBadResponse.json
new file mode 100644 (file)
index 0000000..231bb67
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "response": "{\"test\"}}",
+       "messageCode": "1",
+       "message": "Success",
+       "processInstanceID": "1",
+       "variables": "null"
+}
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/__files/Camunda/UnauthorizedResponse.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/__files/Camunda/UnauthorizedResponse.json
new file mode 100644 (file)
index 0000000..d6273bb
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "timestamp": 1533899092159,
+       "status": 401,
+       "error": "Unauthorized",
+       "message": "Bad credentials",
+       "path": "/onap/so/infra/serviceInstances/v7"
+}
\ No newline at end of file
index 5eb2add..6ab9285 100644 (file)
@@ -82,10 +82,6 @@ public class RequestsDbClient {
        private static final String VALUE = "VALUE";
        private static final String TAG = "TAG";
        
-       private Client<InfraActiveRequests> infraActiveRequestClient;
-       private Client<RequestProcessingData> requestProcessingDataClient;
-       private final Client<OperationalEnvDistributionStatus> distributionStatusClient;
-       private final Client<OperationalEnvServiceModelStatus> serviceModelStatusClient;
 
        @Value("${mso.adapters.requestDb.endpoint}")
        protected String endpoint;
@@ -140,11 +136,12 @@ public class RequestsDbClient {
                findOneByOperationalEnvIdAndServiceModelVersionIdURI = endpoint + OPERATIONAL_ENV_SERVICE_MODEL_STATUS_SEARCH + findOneByOperationalEnvIdAndServiceModelVersionIdURI;
                findAllByOperationalEnvIdAndRequestIdURI = endpoint + OPERATIONAL_ENV_SERVICE_MODEL_STATUS_SEARCH + findAllByOperationalEnvIdAndRequestIdURI;
        }
-
-       public RequestsDbClient() {
+       
+       public ClientFactory getClientFactory(){
+               URI baseUri = UriBuilder.fromUri(endpoint).build();             
                ClientHttpRequestFactory factory = new BufferingClientHttpRequestFactory(new HttpComponentsClientHttpRequestFactory());
 
-               ClientFactory clientFactory = Configuration.builder().setClientHttpRequestFactory(factory).setRestTemplateConfigurer(restTemplate -> {
+               return Configuration.builder().setBaseUri(baseUri).setClientHttpRequestFactory(factory).setRestTemplateConfigurer(restTemplate -> {
                        restTemplate.getInterceptors().add((new SpringClientFilter()));
 
                        restTemplate.getInterceptors().add((request, body, execution) -> {
@@ -153,11 +150,8 @@ public class RequestsDbClient {
                                return execution.execute(request, body);
                        });
                }).build().buildClientFactory();
-               infraActiveRequestClient = clientFactory.create(InfraActiveRequests.class);
-               requestProcessingDataClient = clientFactory.create(RequestProcessingData.class);
-               distributionStatusClient = clientFactory.create(OperationalEnvDistributionStatus.class);
-               serviceModelStatusClient = clientFactory.create(OperationalEnvServiceModelStatus.class);
        }
+
        
        public List<InfraActiveRequests> getCloudOrchestrationFiltersFromInfraActive(Map<String, String> orchestrationMap){
                URI uri = getUri(cloudOrchestrationFiltersFromInfraActive);
@@ -176,7 +170,10 @@ public class RequestsDbClient {
 
     public InfraActiveRequests getInfraActiveRequestbyRequestId(String requestId) {
         try {
-            InfraActiveRequests infraActiveRequests = restTemplate.exchange(getUri(endpoint + "/infraActiveRequests/" + requestId), HttpMethod.GET, HttpEntity.EMPTY, InfraActiveRequests.class).getBody();
+               HttpHeaders headers = new HttpHeaders();
+               headers.set("Authorization", msoAdaptersAuth);
+               HttpEntity<?> entity = new HttpEntity<>(headers);
+            InfraActiveRequests infraActiveRequests = restTemplate.exchange(getUri(endpoint + "/infraActiveRequests/" + requestId), HttpMethod.GET, entity, InfraActiveRequests.class).getBody();
             if (infraActiveRequests != null) {
                 infraActiveRequests.setRequestId(requestId);
             }
@@ -198,9 +195,13 @@ public class RequestsDbClient {
        }
 
        public InfraActiveRequests checkVnfIdStatus(String operationalEnvironmentId) {
+       HttpHeaders headers = new HttpHeaders();
+               headers.set("Authorization", msoAdaptersAuth);
+               HttpEntity<?> entity = new HttpEntity<>(headers);
                URI uri = getUri(checkVnfIdStatus + operationalEnvironmentId);
-               return restTemplate.exchange(uri, HttpMethod.GET, HttpEntity.EMPTY, InfraActiveRequests.class).getBody();
+               return restTemplate.exchange(uri, HttpMethod.GET, entity, InfraActiveRequests.class).getBody();
        }
+       
        public InfraActiveRequests checkInstanceNameDuplicate(HashMap<String, String> instanceIdMap, String instanceName, String requestScope) {
                HttpHeaders headers = new HttpHeaders();
                headers.set("Authorization", msoAdaptersAuth);
@@ -219,10 +220,13 @@ public class RequestsDbClient {
 
        public OperationStatus getOneByServiceIdAndOperationId(String serviceId, String operationId) {
                try {
+               HttpHeaders headers = new HttpHeaders();
+                       headers.set("Authorization", msoAdaptersAuth);
+                       HttpEntity<?> entity = new HttpEntity<>(headers);
                        OperationStatus operationStatus = restTemplate.exchange(UriBuilder.fromUri(getUri(findOneByServiceIdAndOperationIdURI))
                                        .queryParam(SERVICE_ID, serviceId)
                                        .queryParam(OPERATION_ID, operationId)
-                                       .build(), HttpMethod.GET, HttpEntity.EMPTY, OperationStatus.class).getBody();
+                                       .build(), HttpMethod.GET, entity, OperationStatus.class).getBody();
                        if (operationStatus != null) {
                                operationStatus.setServiceId(serviceId);
                                operationStatus.setOperationId(operationId);
@@ -256,11 +260,11 @@ public class RequestsDbClient {
        }
        
        private OperationalEnvServiceModelStatus getSingleOperationalEnvServiceModelStatus(URI uri){
-               return serviceModelStatusClient.get(uri);
+               return getClientFactory().create(OperationalEnvServiceModelStatus.class).get(uri);
        }
 
        private List<OperationalEnvServiceModelStatus> getMultipleOperationalEnvServiceModelStatus(URI uri){
-               Iterable <OperationalEnvServiceModelStatus> iterable = serviceModelStatusClient.getAll(uri);
+               Iterable <OperationalEnvServiceModelStatus> iterable = getClientFactory().create(OperationalEnvServiceModelStatus.class).getAll(uri);
                List<OperationalEnvServiceModelStatus> serviceModelStatuses = new ArrayList<>();
                Iterator<OperationalEnvServiceModelStatus> statusIterator = iterable.iterator();
                statusIterator.forEachRemaining(serviceModelStatuses::add);
@@ -284,11 +288,17 @@ public class RequestsDbClient {
        }
        
        private OperationalEnvDistributionStatus getSingleOperationalEnvDistributionStatus(URI uri){
-               return distributionStatusClient.get(uri);
+               return getClientFactory().create(OperationalEnvDistributionStatus.class).get(uri);
        }
 
-       public void updateInfraActiveRequests(InfraActiveRequests request) {            
-               infraActiveRequestClient.put(request);
+       public void updateInfraActiveRequests(InfraActiveRequests request) {                            
+               HttpHeaders headers = new HttpHeaders();
+               headers.set("Authorization", msoAdaptersAuth);
+               headers.set(HttpHeaders.CONTENT_TYPE,"application/json");
+               headers.set(HttpHeaders.ACCEPT,  "application/json");
+               URI uri = getUri(infraActiveRequestURI+request.getRequestId());
+               HttpEntity<InfraActiveRequests> entity = new HttpEntity<>(request, headers);
+               restTemplate.put(uri, entity);
        }
        
        protected URI getUri(String uri) {
@@ -319,11 +329,11 @@ public class RequestsDbClient {
        }
        
        public RequestProcessingData getSingleRequestProcessingData(URI uri){
-               return requestProcessingDataClient.get(uri);
+               return getClientFactory().create(RequestProcessingData.class).get(uri);
        }
        
        private List<RequestProcessingData> getRequestProcessingData(URI uri) {
-               Iterable<RequestProcessingData> requestProcessingDataIterator = requestProcessingDataClient.getAll(uri);
+               Iterable<RequestProcessingData> requestProcessingDataIterator = getClientFactory().create(RequestProcessingData.class).getAll(uri);
                List<RequestProcessingData> requestProcessingDataList = new ArrayList<>();
                Iterator<RequestProcessingData> it = requestProcessingDataIterator.iterator();
                it.forEachRemaining(requestProcessingDataList::add);
@@ -335,8 +345,8 @@ public class RequestsDbClient {
                return (List<RequestProcessingData>) this.getAllRequestProcessingData(UriBuilder.fromUri(endpoint + "/requestProcessingData").build());
        }
        
-       private Iterable<RequestProcessingData> getAllRequestProcessingData(URI uri) {
-               return requestProcessingDataClient.getAll(uri);
+       private Iterable<RequestProcessingData> getAllRequestProcessingData(URI uri) {          
+               return getClientFactory().create(RequestProcessingData.class).getAll(uri);
        }
 
        @Component