Need to globally check object name duplicates in 19/99519/1
authorGamboa, Gilbert <gilbert.g.gamboa@att.com>
Wed, 11 Dec 2019 18:35:47 +0000 (13:35 -0500)
committerBenjamin, Max (mb388a) <mb388a@att.com>
Wed, 11 Dec 2019 18:35:47 +0000 (13:35 -0500)
Need to globally check object name duplicates in AAI for vf-module,
volumegroup and configuration.

Issue-ID: SO-2563
Signed-off-by: Benjamin, Max (mb388a) <mb388a@att.com>
Change-Id: I88a89a4a3ba02d5d9d586593d259580bf4546c96

bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtils.java
bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtilsTest.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java
bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionTest.java

index fcac86b..31275f7 100644 (file)
@@ -587,6 +587,24 @@ public class BBInputSetupUtils {
         return aaiRC.exists(l3networkUri);
     }
 
+    public boolean existsAAIVfModuleGloballyByName(String vfModuleName) {
+        AAIResourceUri vfModuleUri =
+                AAIUriFactory.createNodesUri(AAIObjectPlurals.VF_MODULE).queryParam("vf-module-name", vfModuleName);
+        return injectionHelper.getAaiClient().exists(vfModuleUri);
+    }
+
+    public boolean existsAAIConfigurationGloballyByName(String configurationName) {
+        AAIResourceUri configUri = AAIUriFactory.createResourceUri(AAIObjectPlurals.CONFIGURATION)
+                .queryParam("configuration-name", configurationName);
+        return injectionHelper.getAaiClient().exists(configUri);
+    }
+
+    public boolean existsAAIVolumeGroupGloballyByName(String volumeGroupName) {
+        AAIResourceUri volumeGroupUri = AAIUriFactory.createNodesUri(AAIObjectPlurals.VOLUME_GROUP)
+                .queryParam("volume-group-name", volumeGroupName);
+        return injectionHelper.getAaiClient().exists(volumeGroupUri);
+    }
+
     public GenericVnfs getAAIVnfsGloballyByName(String vnfName) {
 
         return injectionHelper.getAaiClient()
index 7780837..53d167e 100644 (file)
@@ -878,4 +878,35 @@ public class BBInputSetupUtilsTest {
         assertEquals(actual.get().getConfigurationId(), expected.get().getConfiguration().get(0).getConfigurationId());
     }
 
+    @Test
+    public void existsAAIVfModuleGloballyByNameTest() throws Exception {
+        AAIResourceUri expectedUri =
+                AAIUriFactory.createNodesUri(AAIObjectPlurals.VF_MODULE).queryParam("vf-module-name", "testVfModule");
+        bbInputSetupUtils.existsAAIVfModuleGloballyByName("testVfModule");
+        verify(MOCK_aaiResourcesClient, times(1)).exists(expectedUri);
+    }
+
+    @Test
+    public void existsAAIConfigurationGloballyByNameTest() throws Exception {
+        AAIResourceUri expectedUri = AAIUriFactory.createResourceUri(AAIObjectPlurals.CONFIGURATION)
+                .queryParam("configuration-name", "testConfig");
+        bbInputSetupUtils.existsAAIConfigurationGloballyByName("testConfig");
+        verify(MOCK_aaiResourcesClient, times(1)).exists(expectedUri);
+    }
+
+    @Test
+    public void existsAAINetworksGloballyByNameTest() throws Exception {
+        AAIResourceUri expectedUri =
+                AAIUriFactory.createResourceUri(AAIObjectPlurals.L3_NETWORK).queryParam("network-name", "testNetwork");
+        bbInputSetupUtils.existsAAINetworksGloballyByName("testNetwork");
+        verify(MOCK_aaiResourcesClient, times(1)).exists(expectedUri);
+    }
+
+    @Test
+    public void existsAAIVolumeGroupGloballyByNameTest() throws Exception {
+        AAIResourceUri expectedUri = AAIUriFactory.createNodesUri(AAIObjectPlurals.VOLUME_GROUP)
+                .queryParam("volume-group-name", "testVoumeGroup");
+        bbInputSetupUtils.existsAAIVolumeGroupGloballyByName("testVoumeGroup");
+        verify(MOCK_aaiResourcesClient, times(1)).exists(expectedUri);
+    }
 }
index 58bf17f..5cab676 100644 (file)
@@ -1268,12 +1268,15 @@ public class WorkflowAction {
                         }
                     }
                 }
+                if (bbInputSetupUtils.existsAAIVfModuleGloballyByName(instanceName)) {
+                    throw new DuplicateNameException("vfModule", instanceName);
+                }
             } else if ("VOLUMEGROUP".equalsIgnoreCase(type.toString())) {
                 GenericVnf vnf = bbInputSetupUtils.getAAIGenericVnf(workflowResourceIds.getVnfId());
                 Optional<VolumeGroup> volumeGroup = bbInputSetupUtils
                         .getRelatedVolumeGroupByNameFromVnf(workflowResourceIds.getVnfId(), instanceName);
                 if (volumeGroup.isPresent()) {
-                    if (vnf.getModelCustomizationId()
+                    if (volumeGroup.get().getVfModuleModelCustomizationId()
                             .equalsIgnoreCase(reqDetails.getModelInfo().getModelCustomizationId())) {
                         return volumeGroup.get().getVolumeGroupId();
                     } else {
@@ -1286,7 +1289,7 @@ public class WorkflowAction {
                                 bbInputSetupUtils.getRelatedVolumeGroupByNameFromVfModule(vnf.getVnfId(),
                                         vfModule.getVfModuleId(), instanceName);
                         if (volumeGroupFromVfModule.isPresent()) {
-                            if (vnf.getModelCustomizationId()
+                            if (volumeGroupFromVfModule.get().getVfModuleModelCustomizationId()
                                     .equalsIgnoreCase(reqDetails.getModelInfo().getModelCustomizationId())) {
                                 return volumeGroupFromVfModule.get().getVolumeGroupId();
                             } else {
@@ -1297,6 +1300,9 @@ public class WorkflowAction {
                         }
                     }
                 }
+                if (bbInputSetupUtils.existsAAIVolumeGroupGloballyByName(instanceName)) {
+                    throw new DuplicateNameException("volumeGroup", instanceName);
+                }
             } else if ("CONFIGURATION".equalsIgnoreCase(type.toString())) {
                 Optional<org.onap.aai.domain.yang.Configuration> configuration =
                         bbInputSetupUtils.getRelatedConfigurationByNameFromServiceInstance(
@@ -1311,6 +1317,9 @@ public class WorkflowAction {
                                         configuration.get().getConfigurationId()));
                     }
                 }
+                if (bbInputSetupUtils.existsAAIConfigurationGloballyByName(instanceName)) {
+                    throw new DuplicateNameException("configuration", instanceName);
+                }
             }
             return generatedResourceId;
         } catch (DuplicateNameException dne) {
index 6c95970..a894706 100644 (file)
@@ -1702,7 +1702,24 @@ public class WorkflowActionTest extends BaseTaskTest {
                 "vfModule with name (vFModName222), same parent and different customization id (1234567) already exists. The name must be unique."));
         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "vFModName222", reqDetails,
                 workflowResourceIds);
+    }
 
+    @Test
+    public void validateVfModuleResourceIdInAAINotGloballyUniqueTest() throws Exception {
+        RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
+        WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
+        workflowResourceIds.setVnfId("id111");
+
+        GenericVnf vnf1 = new GenericVnf();
+        workflowResourceIds.setVnfId("id111");
+        when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf1);
+
+        when(bbSetupUtils.existsAAIVfModuleGloballyByName("vFModName333")).thenReturn(true);
+        this.expectedException.expect(DuplicateNameException.class);
+        this.expectedException.expectMessage(
+                containsString("vfModule with name vFModName333 already exists. The name must be unique."));
+        workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "vFModName333", reqDetails,
+                workflowResourceIds);
     }
 
     @Test
@@ -1725,6 +1742,7 @@ public class WorkflowActionTest extends BaseTaskTest {
         VolumeGroup volumeGroup = new VolumeGroup();
         volumeGroup.setVolumeGroupId("id123");
         volumeGroup.setVolumeGroupName("name123");
+        volumeGroup.setVfModuleModelCustomizationId("1234567");
         workflowResourceIds.setVnfId("id123");
         Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
 
@@ -1746,6 +1764,24 @@ public class WorkflowActionTest extends BaseTaskTest {
         assertEquals("generatedId123", id2);
     }
 
+    @Test
+    public void validateVolumeGroupResourceIdInAAINotGloballyUniqueTest() throws Exception {
+        RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
+        WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
+        workflowResourceIds.setVnfId("id123");
+        GenericVnf vnf = new GenericVnf();
+        vnf.setVnfId("id123");
+        when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
+        when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "testVolumeGroup")).thenReturn(Optional.empty());
+
+        when(bbSetupUtils.existsAAIVolumeGroupGloballyByName("testVolumeGroup")).thenReturn(true);
+        this.expectedException.expect(DuplicateNameException.class);
+        this.expectedException.expectMessage(
+                containsString("volumeGroup with name testVolumeGroup already exists. The name must be unique."));
+        workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "testVolumeGroup",
+                reqDetails, workflowResourceIds);
+    }
+
     @Test
     public void validateConfigurationResourceIdInAAITest() throws Exception {
         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
@@ -1788,6 +1824,22 @@ public class WorkflowActionTest extends BaseTaskTest {
                 workflowResourceIds);
     }
 
+    @Test
+    public void validateConfigurationResourceIdInAAINotGloballyUniqueTest() throws Exception {
+        RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
+        WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
+        workflowResourceIds.setServiceInstanceId("siId123");
+
+        when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "testConfig"))
+                .thenReturn(Optional.empty());
+        when(bbSetupUtils.existsAAIConfigurationGloballyByName("testConfig")).thenReturn(true);
+        this.expectedException.expect(DuplicateNameException.class);
+        this.expectedException.expectMessage(
+                containsString("configuration with name testConfig already exists. The name must be unique."));
+        workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "testConfig", reqDetails,
+                workflowResourceIds);
+    }
+
     @Test
     public void validateServiceInstanceResourceIdInAAITest() throws Exception {
         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();