more stability fixes 43/67043/1
authorBenjamin, Max (mb388a) <mb388a@us.att.com>
Mon, 17 Sep 2018 15:14:35 +0000 (11:14 -0400)
committerBenjamin, Max (mb388a) <mb388a@us.att.com>
Mon, 17 Sep 2018 16:01:30 +0000 (12:01 -0400)
Remove conditional to not check VNF topology
add empty string verification for serviceName field
Add junits for CNRCR and NtwkAdptr changes.
Add search in new CollNtwkResCust tbl to get NtwkResource.
-  Updated test data files to include 'pre-load' flag in both
VfModuleOperation and NetworkOperation json test data files.
-  MSO to not to send <preload>boolean</from-preload> to SDNC in
network-topology-opertion and vf-module-topology-operation. Updated
GeneralTopologyObjectMapper to set 'from-preload' to null so that
elements with Nulls are not sent to SDNC. Updated
buildNetworkInformation() and buildVfModuleInformation() methods.
update flow stats to not cause bpmn flow to crash
Fix headers so SDNC does not return XML
Add implementation of deleteVolumeGroupResponse parsing; fix JUnits
that worked by accident.

Change-Id: Ia96d552d731e112505fcf739029a6fd4d0134546
Issue-ID: SO-1061
Signed-off-by: Benjamin, Max (mb388a) <mb388a@us.att.com>
27 files changed:
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/network/MsoNetworkAdapterImpl.java
adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/network/NetworkAdapterRestTest.java
adapters/mso-openstack-adapters/src/test/resources/CreateNetwork3.json [new file with mode: 0644]
adapters/mso-openstack-adapters/src/test/resources/__files/CreateNetworkResponse3.json [new file with mode: 0644]
adapters/mso-openstack-adapters/src/test/resources/data.sql
asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
asdc-controller/src/main/java/org/onap/so/asdc/util/ASDCNotificationLogging.java
bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/SniroUtils.groovy
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/buildingblock/SniroHomingV2.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterImpl.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasks.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/sdnc/SdnCommonTasks.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/sdnc/mapper/GeneralTopologyObjectMapper.java
bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterImplTest.java
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/genericResourceApiNetworkOperationInformation.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/genericResourceApiNetworkOperationInformationNoNetworkName.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/genericResourceApiNetworkOperationInformationUnAssign.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/genericResourceApiVfModuleOperationInformationAssign.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/genericResourceApiVfModuleOperationInformationUnassign.json
bpmn/so-bpmn-tasks/src/test/resources/__files/VfModularity/CreateVfModuleVolumeCallbackResponse.xml [new file with mode: 0644]
bpmn/so-bpmn-tasks/src/test/resources/__files/VfModularity/DeleteVfModuleVolumeCallbackResponse.xml [new file with mode: 0644]
bpmn/so-bpmn-tasks/src/test/resources/__files/VfModularity/VNFAdapterRestDeleteResponse.xml [new file with mode: 0644]
common/src/main/java/org/onap/so/client/aai/AAIObjectPlurals.java
mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/CollectionNetworkResourceCustomizationRepository.java
mso-catalog-db/src/test/java/org/onap/so/db/catalog/data/repository/CollectionNetworkResourceCustomizationRepositoryTest.java [new file with mode: 0644]
mso-catalog-db/src/test/resources/data.sql

index ac33a52..4b6bd09 100644 (file)
@@ -42,6 +42,8 @@ import org.onap.so.db.catalog.beans.CloudSite;
 import org.onap.so.db.catalog.beans.HeatTemplate;
 import org.onap.so.db.catalog.beans.NetworkResource;
 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
+import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
+import org.onap.so.db.catalog.data.repository.CollectionNetworkResourceCustomizationRepository;
 import org.onap.so.db.catalog.data.repository.NetworkResourceCustomizationRepository;
 import org.onap.so.db.catalog.data.repository.NetworkResourceRepository;
 import org.onap.so.db.catalog.utils.MavenLikeVersioning;
@@ -107,6 +109,9 @@ public class MsoNetworkAdapterImpl implements MsoNetworkAdapter {
     @Autowired         
     private NetworkResourceCustomizationRepository  networkCustomRepo;
     
+    @Autowired
+    private CollectionNetworkResourceCustomizationRepository collectionNetworkCustomRepo;
+    
     @Autowired
     private NetworkResourceRepository  networkResourceRepo;
     /**
@@ -1124,18 +1129,26 @@ public class MsoNetworkAdapterImpl implements MsoNetworkAdapter {
         // Retrieve the Network Resource definition
         NetworkResource networkResource = null;
         NetworkResourceCustomization networkCust = null;
+        CollectionNetworkResourceCustomization collectionNetworkCust = null;
                        if (commonUtils.isNullOrEmpty(modelCustomizationUuid)) {
                                if (!commonUtils.isNullOrEmpty(networkType)) {
-                                       networkResource = networkResourceRepo.findOneByModelName(networkType);
+                                       networkResource = networkResourceRepo.findFirstByModelNameOrderByModelVersionDesc(networkType);
                                }
                        } else {
                                networkCust = networkCustomRepo.findOneByModelCustomizationUUID(modelCustomizationUuid);
+                               if (networkCust == null) {
+                                       collectionNetworkCust = collectionNetworkCustomRepo.findOneByModelCustomizationUUID(modelCustomizationUuid);
+                               }
                        }
                        if(networkCust != null){
                                LOGGER.debug("Got Network Customization definition from Catalog: "
                                                + networkCust.toString());
 
                                networkResource = networkCust.getNetworkResource();
+                       } else if (collectionNetworkCust != null) {
+                               LOGGER.debug("Retrieved Collection Network Resource Customization from Catalog: " 
+                                               + collectionNetworkCust.toString());
+                               networkResource = collectionNetworkCust.getNetworkResource();
                        }
                        if (networkResource == null) {
                                String error = "Create/UpdateNetwork: Unable to get network resource with NetworkType:"
index 2a4564b..6123415 100644 (file)
@@ -142,7 +142,7 @@ public class NetworkAdapterRestTest extends BaseRestTestUtils {
 
                ResponseEntity<CreateNetworkResponse> response = restTemplate.exchange(
                                createURLWithPort("/services/rest/v1/networks"), HttpMethod.POST, entity, CreateNetworkResponse.class);
-
+               
                CreateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
                                new File("src/test/resources/__files/CreateNetworkResponse2.json"), CreateNetworkResponse.class);
 
@@ -150,6 +150,8 @@ public class NetworkAdapterRestTest extends BaseRestTestUtils {
                assertThat(response.getBody(), sameBeanAs(expectedResponse));
        }
        
+
+       
        @Test
        public void testDeleteNetwork() throws IOException{
                
@@ -267,6 +269,33 @@ public class NetworkAdapterRestTest extends BaseRestTestUtils {
                assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
        }       
        
+       @Test
+       public void testCreateNetworkCNRC_JSON() throws JSONException, JsonParseException, JsonMappingException, IOException {
+               
+               mockOpenStackResponseAccess(wireMockPort);
+
+               mockOpenStackPostPublicUrlWithBodyFile_200();
+
+               mockOpenStackGetStackCreatedAppC_200();
+               
+               mockOpenStackGetStackAppC_404();
+               
+               headers.add("Content-Type", MediaType.APPLICATION_JSON);
+               headers.add("Accept", MediaType.APPLICATION_JSON);
+               
+               String request = readJsonFileAsString("src/test/resources/CreateNetwork3.json");
+               HttpEntity<String> entity = new HttpEntity<String>(request, headers);
+
+               ResponseEntity<CreateNetworkResponse> response = restTemplate.exchange(
+                               createURLWithPort("/services/rest/v1/networks"), HttpMethod.POST, entity, CreateNetworkResponse.class);
+
+               CreateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
+                               new File("src/test/resources/__files/CreateNetworkResponse3.json"), CreateNetworkResponse.class);
+               
+               assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
+               assertThat(response.getBody(), sameBeanAs(expectedResponse));
+       }
+       
        @Override
        protected String readJsonFileAsString(String fileLocation) throws JsonParseException, JsonMappingException, IOException{
                return new String(Files.readAllBytes(Paths.get(fileLocation)));
diff --git a/adapters/mso-openstack-adapters/src/test/resources/CreateNetwork3.json b/adapters/mso-openstack-adapters/src/test/resources/CreateNetwork3.json
new file mode 100644 (file)
index 0000000..accd9e9
--- /dev/null
@@ -0,0 +1,42 @@
+{
+       "createNetworkRequest": {
+               "skipAAI": true,
+               "messageId": "c4c44af4-4310-4d8b-a1eb-656fc99fe709",
+               "synchronous": true,
+               "cloudSiteId": "mtn13",
+               "tenantId": "ba38bc24a2ef4fb2ad2810c894f1938f",
+               "networkId": "da886914-efb2-4917-b335-c8381528d90b",
+               "networkName": "APP-C-24595-T-IST-04AShared_untrusted_vDBE_net_3",
+               "networkType": "CONTRAIL30_BASIC",
+               "modelCustomizationUuid": "3bdbb104-ffff-483e-9f8b-c095b3d30844",
+               "networkTechnology": "NEUTRON",
+               "subnets": [{
+                       "subnetName": "APP-C-24595-T-IST-04AShared_untrusted_vDBE_net_3_subnet_1",
+                       "subnetId": "da60501d-9aa8-48d2-99b7-26644fa01093",
+                       "cidr": "20",
+                       "gatewayIp": "",
+                       "ipVersion": "4",
+                       "enableDHCP": false,
+                       "addrFromStart": true,
+                       "hostRoutes": []
+               }],
+               "providerVlanNetwork": {
+                       "physicalNetworkName": "FALSE",
+                       "vlans": []
+               },
+               "contrailNetwork": {
+                       "shared": "false",
+                       "external": "false",
+                       "routeTargets": [],
+                       "policyFqdns": [],
+                       "routeTableFqdns": []
+               },
+               "failIfExists": true,
+               "backout": false,
+               "msoRequest": {
+                       "requestId": "5349f419-b3e9-4546-b3a1-094bd568d6b7",
+                       "serviceInstanceId": "cf965caf-a003-4189-abf9-e0ed77056dd6"
+               },
+               "contrailRequest": false
+       }
+}
\ No newline at end of file
diff --git a/adapters/mso-openstack-adapters/src/test/resources/__files/CreateNetworkResponse3.json b/adapters/mso-openstack-adapters/src/test/resources/__files/CreateNetworkResponse3.json
new file mode 100644 (file)
index 0000000..2e5517c
--- /dev/null
@@ -0,0 +1,25 @@
+{
+       "createNetworkResponse": {
+               "networkId": "da886914-efb2-4917-b335-c8381528d90b",
+               "neutronNetworkId": null,
+               "networkStackId": "stackname/stackId",
+               "networkFqdn": null,
+               "networkCreated": true,
+               "subnetMap": {
+
+               },
+               "rollback": {
+                       "networkStackId": "stackname/stackId",
+                       "tenantId": "ba38bc24a2ef4fb2ad2810c894f1938f",
+                       "cloudId": "mtn13",
+                       "networkType": "CONTRAIL30_BASIC",
+                       "modelCustomizationUuid": "3bdbb104-ffff-483e-9f8b-c095b3d30844",
+                       "networkCreated": true,
+                       "msoRequest": {
+                               "requestId": "5349f419-b3e9-4546-b3a1-094bd568d6b7",
+                               "serviceInstanceId": "cf965caf-a003-4189-abf9-e0ed77056dd6"
+                       }
+               },
+               "messageId": "c4c44af4-4310-4d8b-a1eb-656fc99fe709"
+       }
+}
\ No newline at end of file
index d16ca45..960f483 100644 (file)
@@ -71,6 +71,20 @@ insert into network_resource_customization(model_customization_uuid, model_insta
 ('3bdbb104-476c-483e-9f8b-c095b3d30844', 'CONTRAIL30_BASIC', '', 'CONTRAIL30_BASIC', '', '', '2017-04-19 14:28:32', '10b36f65-f4e6-4be6-ae49-9596dc1c4789'),
 ('3bdbb104-476c-483e-9f8b-c095b3d3068c', 'CONTRAIL31_BASIC', '', 'CONTRAIL31_BASIC', '', '', '2017-04-19 14:28:32', '10b36f65-f4e6-4be6-ae49-9596dc1c4790');
 
+insert into instance_group(model_uuid, model_name, model_invariant_uuid, model_version, tosca_node_type, role, object_type, cr_model_uuid, instance_group_type) values
+('21e43a7c-d823-4f5b-a427-5235f63035ff', 'dror_cr_network_resource_1806..NetworkCollection..0', '81c94263-c01e-4046-b0c7-51878d658eab', '1', 'org.openecomp.groups.NetworkCollection', 'SUB_INTERFACE', 'L3_NETWORK', '5e3fca45-e2d8-4987-bef1-016d9bda1a8c', 'L3_NETWORK');
+
+insert into collection_resource(model_uuid, model_name, model_invariant_uuid, model_version, tosca_node_type, description) values
+('5e3fca45-e2d8-4987-bef1-016d9bda1a8c', 'Dror_CR_Network_Resource_1806', 'fe243154-ac18-405f-94c2-ef629d26b8bb', '2.0', 'org.openecomp.resource.cr.DrorCrNetworkResource1806', 'Creation date: 07/25/18');
+
+insert into collection_resource_customization(model_customization_uuid, model_instance_name, role, object_type, function, collection_resource_type, cr_model_uuid) values
+('c51096a4-6081-41f4-a540-3ed015a8064a', 'Dror_CR_Network_Resource_1806', 'Dror2', 'NetworkCollection', 'Dror1', 'Dror3', '5e3fca45-e2d8-4987-bef1-016d9bda1a8c');
+
+insert into collection_network_resource_customization(model_customization_uuid, model_instance_name, network_technology, network_type, network_role, network_scope, network_resource_model_uuid, instance_group_model_uuid, crc_model_customization_uuid) values
+('3bdbb104-ffff-483e-9f8b-c095b3d30844', 'ExtVL 0', 'CONTRAIL', 'L3-NETWORK', '', '', '10b36f65-f4e6-4be6-ae49-9596dc1c4789', '21e43a7c-d823-4f5b-a427-5235f63035ff', 'c51096a4-6081-41f4-a540-3ed015a8064a'),
+('3bdbb104-ffff-483e-9f8b-c095b3d3068c', 'ExtVL 0', 'CONTRAIL', 'L3-NETWORK', '', '', '10b36f65-f4e6-4be6-ae49-9596dc1c4790', '21e43a7c-d823-4f5b-a427-5235f63035ff', 'c51096a4-6081-41f4-a540-3ed015a8064a');
+
+
 insert into vnf_resource(orchestration_mode, description, creation_timestamp, model_uuid, aic_version_min, aic_version_max, model_invariant_uuid, model_version, model_name, tosca_node_type, heat_template_artifact_uuid) values
 ('HEAT', '1607 vSAMP10a - inherent network', '2017-04-14 21:46:28', 'ff2ae348-214a-11e7-93ae-92361f002672', '', '', '2fff5b20-214b-11e7-93ae-92361f002671', '2.0', 'vSAMP10a', 'VF', null);
 
index 1fca9d3..970cb0b 100644 (file)
@@ -488,13 +488,11 @@ public class ToscaResourceInstaller {
                                                        .getSdcCsarHelper().getVfModulesByVf(vfCustomizationUUID);
                                        IVfModuleData vfMetadata = vfModuleStructure.getVfModuleMetadata();     
                                        
-                                       logger.debug("Comparing VFModule Metadata CustomizationUUID : " + vfMetadata.getVfModuleModelCustomizationUUID());
-                                       for(Group group : vfGroups){
-                                               logger.debug("To Group VFModuleModelCustomizationUUID " + group.getMetadata().getValue("vfModuleModelCustomizationUUID"));
-                                       }
+                                       logger.debug("Comparing VFModuleMetadata CustomizationUUID : " + vfMetadata.getVfModuleModelCustomizationUUID());
                                        
-                                       Optional<org.onap.sdc.toscaparser.api.Group> matchingObject = vfGroups.stream().
-                                                   filter(group -> group.getMetadata().getValue("vfModuleModelCustomizationUUID").equals(vfMetadata.getVfModuleModelCustomizationUUID())).
+                                       Optional<org.onap.sdc.toscaparser.api.Group> matchingObject = vfGroups.stream()
+                                                       .peek(group -> logger.debug("To Csar Group VFModuleModelCustomizationUUID " + group.getMetadata().getValue("vfModuleModelCustomizationUUID")))
+                                                   .filter(group -> group.getMetadata().getValue("vfModuleModelCustomizationUUID").equals(vfMetadata.getVfModuleModelCustomizationUUID())).
                                                    findFirst();
                                        if(matchingObject.isPresent()){
                                                VfModuleCustomization vfModuleCustomization = createVFModuleResource(matchingObject.get(), nodeTemplate, toscaResourceStruct, 
index 5497710..ab9c359 100644 (file)
@@ -201,11 +201,6 @@ public class ASDCNotificationLogging {
                }
                }
                
-               buffer.append(System.lineSeparator());
-               buffer.append(System.lineSeparator());
-               buffer.append("VNF Level Properties:");
-               buffer.append(System.lineSeparator());
-               
         List<NodeTemplate> vfNodeTemplatesList = toscaResourceStructure.getSdcCsarHelper().getServiceVfList();
         for (NodeTemplate vfNodeTemplate :  vfNodeTemplatesList) {
                
@@ -287,17 +282,16 @@ public class ASDCNotificationLogging {
                        
                }
                
-               
-               
-               buffer.append(System.lineSeparator());
-               buffer.append("VF Module Properties:");
-               buffer.append(System.lineSeparator());
+                       
                List<Group> vfGroups = toscaResourceStructure.getSdcCsarHelper().getVfModulesByVf(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID)));
                
                for(Group group : vfGroups){
                        
                        Metadata vfMetadata = group.getMetadata();
                        
+                       buffer.append(System.lineSeparator());
+                       buffer.append("VF Module Properties:");
+                       buffer.append(System.lineSeparator());
                        buffer.append("ModelInvariantUuid:");
                        buffer.append(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELINVARIANTUUID)));
                        buffer.append(System.lineSeparator());
@@ -314,7 +308,62 @@ public class ASDCNotificationLogging {
                        buffer.append(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_DESCRIPTION)));
                        buffer.append(System.lineSeparator());     
                }
-  
+               
+               List<NodeTemplate> cvfcList = toscaResourceStructure.getSdcCsarHelper().getNodeTemplateBySdcType(vfNodeTemplate, SdcTypes.CVFC);
+               
+               for(NodeTemplate cvfcTemplate : cvfcList) {
+                       
+                       buffer.append(System.lineSeparator());
+                       buffer.append("CVNFC Properties:");
+                       buffer.append(System.lineSeparator());
+                       buffer.append("ModelCustomizationUuid:");
+                       buffer.append(testNull(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID)));
+                       buffer.append(System.lineSeparator());
+                       buffer.append("ModelInvariantUuid:");
+                       buffer.append(testNull(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID)));
+                       buffer.append(System.lineSeparator());
+                       buffer.append("ModelName:");
+                       buffer.append(testNull(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME)));
+                       buffer.append(System.lineSeparator()); 
+                       buffer.append("ModelUuid:");
+                       buffer.append(testNull(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID)));
+                       buffer.append(System.lineSeparator());
+                       buffer.append("ModelVersion:");
+                       buffer.append(testNull(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION)));
+                       buffer.append(System.lineSeparator()); 
+                       buffer.append("Description:");
+                       buffer.append(testNull(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION)));
+                       buffer.append(System.lineSeparator()); 
+                       
+                       
+                       List<NodeTemplate> vfcList = toscaResourceStructure.getSdcCsarHelper().getNodeTemplateBySdcType(cvfcTemplate, SdcTypes.VFC);
+                       
+                       for(NodeTemplate vfcTemplate : vfcList) {
+                       buffer.append(System.lineSeparator());
+                       buffer.append("VNFC Properties:");
+                       buffer.append(System.lineSeparator());
+                       buffer.append("ModelCustomizationUuid:");
+                       buffer.append(testNull(vfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID)));
+                       buffer.append(System.lineSeparator());
+                               buffer.append("ModelInvariantUuid:");
+                       buffer.append(testNull(vfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID)));
+                       buffer.append(System.lineSeparator());
+                       buffer.append("ModelName:");
+                       buffer.append(testNull(vfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME)));
+                       buffer.append(System.lineSeparator()); 
+                       buffer.append("ModelUuid:");
+                       buffer.append(testNull(vfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID)));
+                       buffer.append(System.lineSeparator());
+                       buffer.append("ModelVersion:");
+                       buffer.append(testNull(vfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION)));
+                       buffer.append(System.lineSeparator()); 
+                       buffer.append("Description:");
+                       buffer.append(testNull(vfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION)));
+                       buffer.append(System.lineSeparator()); 
+                               
+                       }               
+                       
+               }
         }
         
                
index 9b14432..5ff49fb 100644 (file)
@@ -322,7 +322,6 @@ class SniroUtils{
                                        }
                                        if((isBlank(placements) || placements.equalsIgnoreCase("[]")) && (isBlank(licenses) || licenses.equalsIgnoreCase("[]"))){
                                                msoLogger.debug("Sniro Async Response does not contain: licenses or placements")
-                                               exceptionUtil.buildAndThrowWorkflowException(execution, 400, "Sniro Async Callback Response does not contain: licenses or placements")
                                        }else{
                                                return
                                        }
index 66de6b3..7bc4851 100644 (file)
@@ -244,8 +244,8 @@ public class SniroHomingV2 {
                ModelInfoServiceInstance modelInfo = serviceInstance.getModelInfoServiceInstance();
                if(isNotBlank(modelInfo.getModelInvariantUuid()) && isNotBlank(modelInfo.getModelUuid())){
                        info.put("serviceInstanceId", serviceInstance.getServiceInstanceId());
-                       if(modelInfo.getServiceType() != null){ //temp solution
-                               info.put("serviceName", serviceInstance.getModelInfoServiceInstance().getServiceType());
+                       if(modelInfo.getServiceType() != null && modelInfo.getServiceType().length() > 0){ //temp solution
+                               info.put("serviceName", modelInfo.getServiceType());
                        }
                        info.put("modelInfo", buildModelInfo(serviceInstance.getModelInfoServiceInstance()));
                }else{
index 554af37..db54b21 100644 (file)
@@ -24,6 +24,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.onap.so.adapters.vnfrest.CreateVfModuleResponse;
 import org.onap.so.adapters.vnfrest.CreateVolumeGroupResponse;
 import org.onap.so.adapters.vnfrest.DeleteVfModuleResponse;
+import org.onap.so.adapters.vnfrest.DeleteVolumeGroupResponse;
 import org.onap.so.bpmn.common.BuildingBlockExecution;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
@@ -72,8 +73,8 @@ public class VnfAdapterImpl {
        }
        
        public void postProcessVnfAdapter(BuildingBlockExecution execution) {
-               try {
-            String vnfAdapterResponse = execution.getVariable("vnfAdapterRestV1Response");
+               try {                   
+            String vnfAdapterResponse = execution.getVariable("vnfAdapterRestV1Response");           
             if (!StringUtils.isEmpty( vnfAdapterResponse)) {
                 Object vnfRestResponse = unMarshal(vnfAdapterResponse);
                 if(vnfRestResponse instanceof CreateVfModuleResponse) {
@@ -98,8 +99,15 @@ public class VnfAdapterImpl {
                         execution.setVariable("heatStackId", heatStackId);
                     }else{
                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "HeatStackId is missing from create VolumeGroup Vnf Adapter response.");
-                    }
-                }                
+                    }                    
+                } else if(vnfRestResponse instanceof DeleteVolumeGroupResponse) {                      
+                       VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
+                       Boolean volumeGroupDelete = ((DeleteVolumeGroupResponse) vnfRestResponse).getVolumeGroupDeleted();
+                       if(null!= volumeGroupDelete && volumeGroupDelete) {                             
+                               volumeGroup.setHeatStackId(null);
+                               execution.setVariable("heatStackId", null);
+                       }
+                }
             }
                } catch (Exception ex) {
                        exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -116,7 +124,7 @@ public class VnfAdapterImpl {
             XMLReader xmlReader = spf.newSAXParser().getXMLReader();
 
             JAXBContext jaxbContext = JAXBContext.newInstance(CreateVfModuleResponse.class,
-                    CreateVolumeGroupResponse.class,DeleteVfModuleResponse.class);
+                    CreateVolumeGroupResponse.class,DeleteVfModuleResponse.class,DeleteVolumeGroupResponse.class);
             Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
 
             InputSource inputSource = new InputSource(new StringReader(input));
index ab29e21..9e4b01e 100644 (file)
@@ -30,13 +30,13 @@ import org.onap.so.bpmn.common.workflow.context.WorkflowContextHolder;
 import org.onap.so.bpmn.core.WorkflowException;
 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
-
 import org.onap.so.client.exception.ExceptionBuilder;
 import org.onap.so.db.request.beans.InfraActiveRequests;
 import org.onap.so.db.request.client.RequestsDbClient;
-import org.onap.so.logger.MsoLogger;
 import org.onap.so.serviceinstancebeans.RequestReferences;
 import org.onap.so.serviceinstancebeans.ServiceInstancesResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -50,7 +50,7 @@ public class WorkflowActionBBTasks {
        private static final String G_REQUEST_ID = "mso-request-id";
        private static final String G_ALACARTE = "aLaCarte";
        private static final String G_ACTION = "requestAction";
-       private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, WorkflowActionBBTasks.class);
+       private static final Logger logger = LoggerFactory.getLogger(WorkflowActionBBTasks.class);
 
        @Autowired
        private RequestsDbClient requestDbclient;
@@ -84,10 +84,14 @@ public class WorkflowActionBBTasks {
        }
        
        public void updateFlowStatistics(DelegateExecution execution) {
-               int currentSequence = (int) execution.getVariable(G_CURRENT_SEQUENCE);
-               if(currentSequence > 1) {
-                       InfraActiveRequests request = this.getUpdatedRequest(execution, currentSequence);
-                       requestDbclient.updateInfraActiveRequests(request);
+               try{
+                       int currentSequence = (int) execution.getVariable(G_CURRENT_SEQUENCE);
+                       if(currentSequence > 1) {
+                               InfraActiveRequests request = this.getUpdatedRequest(execution, currentSequence);
+                               requestDbclient.updateInfraActiveRequests(request);
+                       }
+               }catch (Exception ex){
+                       logger.warn("Bpmn Flow Statistics was unable to update Request Db with the new completion percentage. Competion percentage may be invalid.");
                }
        }
 
@@ -146,7 +150,7 @@ public class WorkflowActionBBTasks {
                                .getProcessDefinition(execution.getProcessDefinitionId()).getKey();
                WorkflowContextHolder.getInstance().processCallback(processKey, execution.getProcessInstanceId(), requestId,
                                callbackResponse);
-               msoLogger.info("Successfully sent sync ack.");
+               logger.info("Successfully sent sync ack.");
        }
 
        public void sendErrorSyncAck(DelegateExecution execution) {
@@ -169,7 +173,7 @@ public class WorkflowActionBBTasks {
                                        callbackResponse);
                        execution.setVariable("sentSyncResponse", true);
                } catch (Exception ex) {
-                       msoLogger.debug(" Sending Sync Error Activity Failed. " + "\n" + ex.getMessage());
+                       logger.error(" Sending Sync Error Activity Failed. {}"  , ex.getMessage(), ex);
                }
        }
 
@@ -265,8 +269,7 @@ public class WorkflowActionBBTasks {
 
        public void abortCallErrorHandling(DelegateExecution execution) {
                String msg = "Flow has failed. Rainy day handler has decided to abort the process.";
-               Exception exception = new Exception(msg);
-               msoLogger.error(exception);
+               logger.error(msg);
                throw new BpmnError(msg);
        }
 
@@ -280,14 +283,14 @@ public class WorkflowActionBBTasks {
                                request.setStatusMessage(exception.getErrorMessage());
                        } catch (Exception ex) {
                                //log error and attempt to extact WorkflowExceptionMessage
-                               msoLogger.error(ex);
+                               logger.error("Failed to extract workflow exception from execution.",ex);
                        }
                        if (errorMsg == null){
                                try {
                                        errorMsg = (String) execution.getVariable("WorkflowExceptionErrorMessage");
                                        request.setStatusMessage(errorMsg);
                                } catch (Exception ex) {
-                                       msoLogger.error(ex);
+                                       logger.error("Failed to extract workflow exception message from WorkflowException",ex);
                                        request.setStatusMessage("Unexpected Error in BPMN");
                                }
                        }
index 11a6941..bc4831c 100644 (file)
@@ -161,7 +161,7 @@ public class VnfAdapterVfModuleObjectMapper {
                GenericResourceApiVfmoduletopologyVfModuleTopology vfModuleTopology = mapper.readValue(sdncVfModuleQueryResponse, GenericResourceApiVfmoduletopologyVfModuleTopology.class);
                Map<String,String> paramsMap = new HashMap<>();
 
-               if(vnfTopology.getSdncGeneratedCloudResources() && vfModuleTopology.getSdncGeneratedCloudResources()) {
+               if( vfModuleTopology.getSdncGeneratedCloudResources()) {
                        buildParamsMapFromVfModuleSdncResponse(paramsMap, vfModuleTopology, true);
                        buildParamsMapFromVnfSdncResponse(paramsMap, vnfTopology, null, true);
                }
index d35296a..aefb84c 100644 (file)
@@ -20,7 +20,9 @@
 
 package org.onap.so.client.sdnc;
 
+import java.util.ArrayList;
 import java.util.LinkedHashMap;
+import java.util.List;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.http.HttpStatus;
@@ -29,10 +31,16 @@ import org.onap.so.client.exception.BadResponseException;
 import org.onap.so.client.exception.MapperException;
 import org.onap.so.logger.MessageEnum;
 import org.onap.so.logger.MsoLogger;
+import org.onap.so.logging.jaxrs.filter.SpringClientFilter;
+import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.http.client.BufferingClientHttpRequestFactory;
+import org.springframework.http.client.SimpleClientHttpRequestFactory;
 import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
+import org.springframework.web.client.RestTemplate;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -79,6 +87,9 @@ public class SdnCommonTasks {
         HttpHeaders httpHeader = new HttpHeaders();
         httpHeader.set("Authorization", auth);
         httpHeader.setContentType(MediaType.APPLICATION_JSON);
+        List<MediaType> acceptMediaTypes = new ArrayList<MediaType>();
+        acceptMediaTypes.add(MediaType.APPLICATION_JSON);
+        httpHeader.setAccept(acceptMediaTypes);
         return httpHeader;
     }
 
index 84f056d..432399b 100644 (file)
@@ -83,6 +83,8 @@ public class GeneralTopologyObjectMapper {
                        onapModelInformation.setModelCustomizationUuid(network.getModelInfoNetwork().getModelCustomizationUUID());
                        networkInformation.setOnapModelInformation(onapModelInformation);
                }
+
+               networkInformation.setFromPreload(null);
                networkInformation.setNetworkId(network.getNetworkId());
                //TODO fix this after network type filed included in L3Network object type
                //networkInformation.setNetworkType(network.getNetwork);
@@ -130,6 +132,7 @@ public class GeneralTopologyObjectMapper {
                        vfModuleInformation.setVfModuleType(vfModule.getModelInfoVfModule().getModelName());
                }
                vfModuleInformation.setVfModuleId(vfModule.getVfModuleId());
+               vfModuleInformation.setFromPreload(null);
                return vfModuleInformation;
        }
        public GenericResourceApiSdncrequestheaderSdncRequestHeader buildSdncRequestHeader(SDNCSvcAction svcAction, String sdncReqId){
index 24a99c9..2a8046b 100644 (file)
@@ -46,8 +46,9 @@ public class VnfAdapterImplTest extends BaseTaskTest {
        private static final String VNF_ADAPTER_REST_DELETE_RESPONSE = FileUtil.readResourceFile("__files/VfModularity/VNFAdapterRestDeleteResponse.xml");
        private static final String VNF_ADAPTER_REST_CREATE_RESPONSE =  FileUtil.readResourceFile("__files/VfModularity/VNFAdapterRestCreateCallback.xml");
     private static final String VNF_ADAPTER_VOLUME_CREATE_RESPONSE =  FileUtil.readResourceFile("__files/VfModularity/CreateVfModuleVolumeCallbackResponse.xml");
+    private static final String VNF_ADAPTER_VOLUME_DELETE_RESPONSE =  FileUtil.readResourceFile("__files/VfModularity/DeleteVfModuleVolumeCallbackResponse.xml");
        private static final String TEST_VFMODULE_HEATSTACK_ID = "slowburn";
-    private static final String TEST_VOLUME_HEATSTACK_ID = "testHeatStackId1";
+    private static final String TEST_VOLUME_HEATSTACK_ID = "testHeatStackId1";   
 
        @Before
        public void before() {
@@ -56,6 +57,7 @@ public class VnfAdapterImplTest extends BaseTaskTest {
                vfModule = setVfModule();
         volumeGroup = setVolumeGroup();
                vfModule.setHeatStackId(null);
+               volumeGroup.setHeatStackId(null);
        }
 
        @Test
@@ -98,13 +100,14 @@ public class VnfAdapterImplTest extends BaseTaskTest {
 
        @Test
        public void postProcessVnfAdapter_DeleteResponseTest() {
+               vfModule.setHeatStackId(TEST_VFMODULE_HEATSTACK_ID);
                execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_REST_DELETE_RESPONSE);
                vnfAdapterImpl.postProcessVnfAdapter(execution);
                assertNull(vfModule.getHeatStackId());
        }
        
        @Test
-       public void postProcessVnfAdapter_ResponseNullTest() {
+       public void postProcessVnfAdapter_ResponseNullTest() {          
                execution.setVariable("vnfAdapterRestV1Response", null);
                vnfAdapterImpl.postProcessVnfAdapter(execution);
                assertNull(vfModule.getHeatStackId());
@@ -119,9 +122,10 @@ public class VnfAdapterImplTest extends BaseTaskTest {
        
        @Test
        public void postProcessVnfAdapter_DeleteResponseTest_VfModuleDeletedFalse() {
+               vfModule.setHeatStackId(TEST_VFMODULE_HEATSTACK_ID);
                execution.setVariable("vnfAdapterRestV1Response", "<deleteVfModuleResponse><vfModuleDeleted>false</vfModuleDeleted></deleteVfModuleResponse>");
                vnfAdapterImpl.postProcessVnfAdapter(execution);
-               assertNull(vfModule.getHeatStackId());
+               assertEquals(TEST_VFMODULE_HEATSTACK_ID, vfModule.getHeatStackId());
        }
        
        @Test
@@ -133,9 +137,10 @@ public class VnfAdapterImplTest extends BaseTaskTest {
        
        @Test
        public void postProcessVnfAdapter_DeleteResponseTest_EmptyVfModuleDeletedTag() {
+               vfModule.setHeatStackId(TEST_VFMODULE_HEATSTACK_ID);
                execution.setVariable("vnfAdapterRestV1Response", "<deleteVfModuleResponse></deleteVfModuleResponse>");
                vnfAdapterImpl.postProcessVnfAdapter(execution);
-               assertNull(vfModule.getHeatStackId());
+               assertEquals(TEST_VFMODULE_HEATSTACK_ID, vfModule.getHeatStackId());
        }
 
        @Test
@@ -157,10 +162,43 @@ public class VnfAdapterImplTest extends BaseTaskTest {
         expectedException.expect(BpmnError.class);
         execution.setVariable("vnfAdapterRestV1Response", "<createVolumeGroupResponse></createVolumeGroupResponse>");
         vnfAdapterImpl.postProcessVnfAdapter(execution);
+        assertNull(volumeGroup.getHeatStackId());
     }
+    
+    @Test
+       public void postProcessVnfAdapter_DeleteResponseTest_DeleteVolumeGroup() {
+       volumeGroup.setHeatStackId(TEST_VOLUME_HEATSTACK_ID);
+               execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_VOLUME_DELETE_RESPONSE);
+               vnfAdapterImpl.postProcessVnfAdapter(execution);
+               assertNull(volumeGroup.getHeatStackId());
+       }
+       
+    
+    @Test
+       public void postProcessVnfAdapter_DeleteResponseTest_VolumeGroupDeletedFalse() {
+       volumeGroup.setHeatStackId(TEST_VOLUME_HEATSTACK_ID);
+               execution.setVariable("vnfAdapterRestV1Response", "<deleteVolumeGroupResponse><volumeGroupDeleted>false</volumeGroupDeleted></deleteVolumeGroupResponse>");
+               vnfAdapterImpl.postProcessVnfAdapter(execution);
+               assertEquals(TEST_VOLUME_HEATSTACK_ID, volumeGroup.getHeatStackId());           
+       }
+       
+       @Test
+       public void postProcessVnfAdapter_DeleteResponseTest_EmptyDeleteVolumeGroupResponseTag() {
+        expectedException.expect(BpmnError.class);
+               execution.setVariable("vnfAdapterRestV1Response", "<volumeGroupDeleted></volumeGroupDeleted>");
+               vnfAdapterImpl.postProcessVnfAdapter(execution);        
+       }
+       
+       @Test
+       public void postProcessVnfAdapter_DeleteResponseTest_EmptyVolumeGroupDeletedTag() {
+               volumeGroup.setHeatStackId(TEST_VOLUME_HEATSTACK_ID);
+               execution.setVariable("vnfAdapterRestV1Response", "<deleteVolumeGroupResponse></deleteVolumeGroupResponse>");
+               vnfAdapterImpl.postProcessVnfAdapter(execution);
+               assertEquals(TEST_VOLUME_HEATSTACK_ID, volumeGroup.getHeatStackId());
+       }
 
        @Test
-       public void postProcessVnfAdapterExceptionTest() {
+       public void postProcessVnfAdapterExceptionTest() {              
                execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_REST_CREATE_RESPONSE);
                expectedException.expect(BpmnError.class);
                lookupKeyMap.clear();
index 64192ff..f06d72a 100644 (file)
@@ -21,8 +21,9 @@
     "svc-action" : "unassign"
   },
   "vf-module-information" : {    
-    "vf-module-id" : "testVfModuleId"   
-  },
+    "vf-module-id" : "testVfModuleId",
+    "from-preload": null  
+ },
   "vnf-information" : {    
     "vnf-id" : "testVnfId",
     "vnf-type" : "testVnfType"
diff --git a/bpmn/so-bpmn-tasks/src/test/resources/__files/VfModularity/CreateVfModuleVolumeCallbackResponse.xml b/bpmn/so-bpmn-tasks/src/test/resources/__files/VfModularity/CreateVfModuleVolumeCallbackResponse.xml
new file mode 100644 (file)
index 0000000..feb7ede
--- /dev/null
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<createVolumeGroupResponse>
+    <messageId>{{MESSAGE-ID}}</messageId>
+    <volumeGroupCreated>true</volumeGroupCreated>
+    <volumeGroupId>d485ecee-957c-4a0a-8b95-27a22b90103f</volumeGroupId>
+    <volumeGroupOutputs>
+        <entry>
+            <key>mmsc_vol_1</key>
+            <value>a73e0fe9-1ce8-49c2-8fef-e2788605be29</value>
+        </entry>
+        <entry>
+            <key>mmsc_vol_2</key>
+            <value>37b6455a-5ea8-463a-89e3-0efeaf7b7c6d</value>
+        </entry>
+        <entry>
+            <key>nemsfe_vol_1</key>
+            <value>b7ff1c21-d138-49a3-bf13-4cfd91efaf48</value>
+        </entry>
+        <entry>
+            <key>nemsbe_vol_1</key>
+            <value>a5988471-cd42-44d8-b078-64f2f13d3d4c</value>
+        </entry>
+        <entry>
+            <key>mmsc_vol_5</key>
+            <value>f7b91c1e-ab8c-413a-a850-ba80a246c7e0</value>
+        </entry>
+        <entry>
+            <key>nemsfe_vol_2</key>
+            <value>957ea3f3-2d4a-4707-bfd2-ba66f42037c2</value>
+        </entry>
+        <entry>
+            <key>mmsc_vol_3</key>
+            <value>de6fccfe-d61a-48b0-b03b-87bf1bf749b3</value>
+        </entry>
+        <entry>
+            <key>mmsc_vol_4</key>
+            <value>76162310-2c38-4c32-981c-5c2880190077</value>
+        </entry>
+    </volumeGroupOutputs>
+    <volumeGroupRollback>
+        <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+        <messageId>e585e4f4-9452-437a-b294-45a2d6d3b7a3</messageId>
+        <msoRequest>
+            <requestId>c30b9453-4b68-4c2e-aacf-58a5ba648bf5</requestId>
+            <serviceInstanceId>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</serviceInstanceId>
+        </msoRequest>
+        <tenantId>1bbab536a19b4756926e7d0ec1eb543c</tenantId>
+        <volumeGroupCreated>true</volumeGroupCreated>
+        <volumeGroupId>78987</volumeGroupId>
+        <volumeGroupStackId>ZRDM1MMSC01_base_vol/7f74e5e1-5fc1-4593-ac7e-cc9899a106ef</volumeGroupStackId>
+    </volumeGroupRollback>
+    <volumeGroupStackId>testHeatStackId1</volumeGroupStackId>
+</createVolumeGroupResponse>
diff --git a/bpmn/so-bpmn-tasks/src/test/resources/__files/VfModularity/DeleteVfModuleVolumeCallbackResponse.xml b/bpmn/so-bpmn-tasks/src/test/resources/__files/VfModularity/DeleteVfModuleVolumeCallbackResponse.xml
new file mode 100644 (file)
index 0000000..25aa45a
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<deleteVolumeGroupResponse>
+       <messageId>{{MESSAGE-ID}}</messageId>
+       <volumeGroupDeleted>true</volumeGroupDeleted>
+</deleteVolumeGroupResponse>
diff --git a/bpmn/so-bpmn-tasks/src/test/resources/__files/VfModularity/VNFAdapterRestDeleteResponse.xml b/bpmn/so-bpmn-tasks/src/test/resources/__files/VfModularity/VNFAdapterRestDeleteResponse.xml
new file mode 100644 (file)
index 0000000..b5b6119
--- /dev/null
@@ -0,0 +1,56 @@
+<deleteVfModuleResponse>
+       <messageId>testMessageId</messageId> 
+       <vfModuleDeleted>true</vfModuleDeleted>
+       <vfModuleId>testVfModuleId</vfModuleId>
+       <vfModuleOutputs>
+               <entry>
+                       <key>key1</key>
+                       <value>value1</value>
+               </entry>
+               <entry>
+                       <key>key2</key>
+                       <value>value2</value>
+               </entry>
+               <entry>
+                       <key>server1_private_ip</key>
+                       <value>192.168.28.3</value>
+               </entry>
+               <entry>
+                       <key>contrail-service-instance-fqdn</key>
+                       <value>default-domain:MSOTest:MsoNW-RA</value>
+               </entry>
+               <entry>
+                       <key>policyKey1_contrail_network_policy_fqdn</key>
+                       <value>MSOTest:DefaultPolicyFQDN1</value>
+               </entry>
+               <entry>
+                       <key>policyKey2_contrail_network_policy_fqdn</key>
+                       <value>MSOTest:DefaultPolicyFQDN2</value>
+               </entry>
+               <entry>
+                       <key>oam_management_v6_address</key>
+                       <value>2000:abc:bce:1111</value>
+               </entry>
+               <entry>
+                       <key>oam_management_v4_address</key>
+                       <value>127.0.0.1</value>
+               </entry>
+               <entry> 
+            <key>internal_security_group</key> 
+            <value>test_internal_security_group</value>
+        </entry> 
+        <entry> 
+            <key>int_internal_net_id</key> 
+            <value>test_int_internal_net_id</value> 
+        </entry> 
+        <entry> 
+            <key>dsx_server_group_id</key> 
+            <value>test_dsx_server_group_id</value> 
+        </entry> 
+        <entry> 
+            <key>mcas_host_key</key> 
+            <value>test_mcas_host_key</value> 
+        </entry> 
+       </vfModuleOutputs>
+       <vnfId>testVnfId</vnfId>
+</deleteVfModuleResponse>
\ No newline at end of file
index c50653a..553c1e0 100644 (file)
@@ -33,7 +33,8 @@ public enum AAIObjectPlurals implements GraphInventoryObjectPlurals {
        SERVICE_SUBSCRIPTION(AAIObjectType.CUSTOMER.uriTemplate(), "/service-subscriptions"),
        SERVICE_INSTANCE(AAIObjectType.SERVICE_SUBSCRIPTION.uriTemplate(), "/service-instances"),
        OWNING_ENTITIES(AAINamespaceConstants.BUSINESS, "/owning-entities"),
-       VOLUME_GROUP(AAIObjectType.CLOUD_REGION.uriTemplate(), "/volume-groups/");
+       VOLUME_GROUP(AAIObjectType.CLOUD_REGION.uriTemplate(), "/volume-groups/"),
+       AVAILIBILITY_ZONE(AAIObjectType.CLOUD_REGION.uriTemplate(), "/availability-zones/");
 
 
        private final String uriTemplate;
index 79efe64..d27dce1 100644 (file)
@@ -26,4 +26,7 @@ import org.springframework.data.rest.core.annotation.RepositoryRestResource;
 @RepositoryRestResource(collectionResourceRel = "collectionNetworkResourceCustomization", path = "collectionNetworkResourceCustomization")
 public interface CollectionNetworkResourceCustomizationRepository
                extends JpaRepository<CollectionNetworkResourceCustomization, String> {
+       
+       CollectionNetworkResourceCustomization findOneByModelCustomizationUUID(String modelCustomizationUUID);
+
 }
\ No newline at end of file
diff --git a/mso-catalog-db/src/test/java/org/onap/so/db/catalog/data/repository/CollectionNetworkResourceCustomizationRepositoryTest.java b/mso-catalog-db/src/test/java/org/onap/so/db/catalog/data/repository/CollectionNetworkResourceCustomizationRepositoryTest.java
new file mode 100644 (file)
index 0000000..90ec07f
--- /dev/null
@@ -0,0 +1,49 @@
+/*-
+ * ============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.db.catalog.data.repository;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.onap.so.db.catalog.BaseTest;
+import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
+
+public class CollectionNetworkResourceCustomizationRepositoryTest extends BaseTest {
+    @Autowired
+    private CollectionNetworkResourceCustomizationRepository cnrcRepo;
+    
+    @Test
+    public void findAllTest() throws Exception {
+        List<CollectionNetworkResourceCustomization> cnrcList = cnrcRepo.findAll();
+        Assert.assertFalse(CollectionUtils.isEmpty(cnrcList));
+    }
+    
+    @Test
+    public void findOneByUuidTest() throws Exception {
+       CollectionNetworkResourceCustomization cnrc = cnrcRepo.findOneByModelCustomizationUUID("3bdbb104-ffff-483e-9f8b-c095b3d3068c");
+       Assert.assertTrue(cnrc != null);
+       Assert.assertTrue("ExtVL 01".equals(cnrc.getModelInstanceName()));
+    }
+}
index 097cd1e..3f3aabb 100644 (file)
@@ -88,6 +88,19 @@ insert into network_resource(model_uuid, model_name, model_invariant_uuid, descr
 insert into network_resource_customization(model_customization_uuid, model_instance_name, network_technology, network_type, network_role, network_scope, creation_timestamp, network_resource_model_uuid) values
 ('3bdbb104-476c-483e-9f8b-c095b3d308ac', 'CONTRAIL30_GNDIRECT 9', '', '', '', '', '2017-04-19 14:28:32', '10b36f65-f4e6-4be6-ae49-9596dc1c47fc');
 
+insert into instance_group(model_uuid, model_name, model_invariant_uuid, model_version, tosca_node_type, role, object_type, cr_model_uuid, instance_group_type) values
+('21e43a7c-d823-4f5b-a427-5235f63035ff', 'dror_cr_network_resource_1806..NetworkCollection..0', '81c94263-c01e-4046-b0c7-51878d658eab', '1', 'org.openecomp.groups.NetworkCollection', 'SUB_INTERFACE', 'L3_NETWORK', '5e3fca45-e2d8-4987-bef1-016d9bda1a8c', 'L3_NETWORK');
+
+insert into collection_resource(model_uuid, model_name, model_invariant_uuid, model_version, tosca_node_type, description) values
+('5e3fca45-e2d8-4987-bef1-016d9bda1a8c', 'Dror_CR_Network_Resource_1806', 'fe243154-ac18-405f-94c2-ef629d26b8bb', '2.0', 'org.openecomp.resource.cr.DrorCrNetworkResource1806', 'Creation date: 07/25/18');
+
+insert into collection_resource_customization(model_customization_uuid, model_instance_name, role, object_type, function, collection_resource_type, cr_model_uuid) values
+('c51096a4-6081-41f4-a540-3ed015a8064a', 'Dror_CR_Network_Resource_1806', 'Dror2', 'NetworkCollection', 'Dror1', 'Dror3', '5e3fca45-e2d8-4987-bef1-016d9bda1a8c');
+
+insert into collection_network_resource_customization(model_customization_uuid, model_instance_name, network_technology, network_type, network_role, network_scope, network_resource_model_uuid, instance_group_model_uuid, crc_model_customization_uuid) values
+('3bdbb104-ffff-483e-9f8b-c095b3d30844', 'ExtVL 0', 'CONTRAIL', 'L3-NETWORK', '', '', '10b36f65-f4e6-4be6-ae49-9596dc1c47fz', '21e43a7c-d823-4f5b-a427-5235f63035ff', 'c51096a4-6081-41f4-a540-3ed015a8064a'),
+('3bdbb104-ffff-483e-9f8b-c095b3d3068c', 'ExtVL 01', 'CONTRAIL', 'L3-NETWORK', '', '', '10b36f65-f4e6-4be6-ae49-9596dc1c47fz', '21e43a7c-d823-4f5b-a427-5235f63035ff', 'c51096a4-6081-41f4-a540-3ed015a8064a');
+
 insert into vnf_resource(orchestration_mode, description, creation_timestamp, model_uuid, aic_version_min, aic_version_max, model_invariant_uuid, model_version, model_name, tosca_node_type, heat_template_artifact_uuid) values
 ('HEAT', '1607 vSAMP10a - inherent network', '2017-04-14 21:46:28', 'ff2ae348-214a-11e7-93ae-92361f002672', '', '', '2fff5b20-214b-11e7-93ae-92361f002671', '2.0', 'vSAMP10a', 'VF', null);