add null check for server HostName/Name/Flavor 66/107766/2
authorMnushkin, Dmitry <dmitry.mnushkin@att.com>
Sat, 16 May 2020 16:11:13 +0000 (12:11 -0400)
committerBenjamin, Max (mb388a) <mb388a@att.com>
Mon, 18 May 2020 21:45:54 +0000 (17:45 -0400)
add null check for server HostName/Name/Flavor
maven format file after build failure
include relationship empty string verification
add unit test to verify null/empty string
update empty string validation code

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

adapters/mso-openstack-adapters/src/main/java/org/onap/so/heatbridge/helpers/AaiHelper.java
adapters/mso-openstack-adapters/src/test/java/org/onap/so/heatbridge/HeatBridgeImplTest.java

index eb4b9f5..6817be8 100644 (file)
@@ -39,6 +39,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.onap.aai.domain.yang.Flavor;
 import org.onap.aai.domain.yang.Image;
 import org.onap.aai.domain.yang.PInterface;
@@ -77,9 +78,11 @@ public class AaiHelper {
         List<Relationship> relationships = relationshipList.getRelationship();
 
         // vserver to pserver relationship
-        Relationship pserverRelationship = buildRelationship(
-                AAIUriFactory.createResourceUri(AAIObjectType.PSERVER, server.getHypervisorHostname()));
-        relationships.add(pserverRelationship);
+        if (!StringUtils.isEmpty(server.getHypervisorHostname())) {
+            Relationship pserverRelationship = buildRelationship(
+                    AAIUriFactory.createResourceUri(AAIObjectType.PSERVER, server.getHypervisorHostname()));
+            relationships.add(pserverRelationship);
+        }
 
         // vserver to generic-vnf relationship
         Relationship genericVnfRelationship =
@@ -87,10 +90,11 @@ public class AaiHelper {
         relationships.add(genericVnfRelationship);
 
         // vserver to vnfc relationship
-        Relationship vnfcRelationship =
-                buildRelationship(AAIUriFactory.createResourceUri(AAIObjectType.VNFC, server.getName()));
-        relationships.add(vnfcRelationship);
-
+        if (!StringUtils.isEmpty(server.getName())) {
+            Relationship vnfcRelationship =
+                    buildRelationship(AAIUriFactory.createResourceUri(AAIObjectType.VNFC, server.getName()));
+            relationships.add(vnfcRelationship);
+        }
 
         // vserver to vf-module relationship
         Relationship vfModuleRelationship =
@@ -105,9 +109,12 @@ public class AaiHelper {
         }
 
         // vserver to flavor relationship
-        Relationship flavorRel = buildRelationship(AAIUriFactory.createResourceUri(AAIObjectType.FLAVOR, cloudOwner,
-                cloudRegionId, server.getFlavor().getId()));
-        relationships.add(flavorRel);
+        if (server.getFlavor() != null) {
+            Relationship flavorRel = buildRelationship(AAIUriFactory.createResourceUri(AAIObjectType.FLAVOR, cloudOwner,
+                    cloudRegionId, server.getFlavor().getId()));
+            relationships.add(flavorRel);
+        }
+
         return relationshipList;
     }
 
index 8ce537b..464a17d 100644 (file)
@@ -72,6 +72,7 @@ import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
 import org.onap.aaiclient.client.graphinventory.exceptions.BulkProcessFailed;
 import org.onap.so.db.catalog.beans.CloudIdentity;
 import org.onap.so.heatbridge.constants.HeatBridgeConstants;
+import org.onap.so.heatbridge.helpers.AaiHelper;
 import org.onap.so.heatbridge.openstack.api.OpenstackClient;
 import org.onap.so.heatbridge.openstack.api.OpenstackClientException;
 import org.openstack4j.model.compute.Flavor;
@@ -228,7 +229,7 @@ public class HeatBridgeImplTest {
 
         Server server2 = mock(Server.class);
         when(server2.getId()).thenReturn("test-server2-id");
-        when(server2.getHypervisorHostname()).thenReturn("test-hypervisor");
+        when(server2.getHypervisorHostname()).thenReturn("");
         when(server2.getName()).thenReturn("test-server2-name");
         when(server2.getStatus()).thenReturn(Status.ACTIVE);
         when(server2.getLinks()).thenReturn(new ArrayList<>());
@@ -261,6 +262,90 @@ public class HeatBridgeImplTest {
 
     }
 
+    @Test
+    public void testUpdateVserversToAaiNoHypervisorName() throws HeatBridgeException {
+        // Arrange
+        Server server1 = mock(Server.class);
+
+        when(server1.getId()).thenReturn("test-server1-id");
+        when(server1.getHypervisorHostname()).thenReturn("");
+        when(server1.getName()).thenReturn("test-server1-name");
+        when(server1.getStatus()).thenReturn(Status.ACTIVE);
+        when(server1.getLinks()).thenReturn(new ArrayList<>());
+
+        Server server2 = mock(Server.class);
+        when(server2.getId()).thenReturn("test-server2-id");
+        when(server2.getName()).thenReturn("test-server2-name");
+        when(server2.getStatus()).thenReturn(Status.ACTIVE);
+        when(server2.getLinks()).thenReturn(new ArrayList<>());
+
+        List<Server> servers = Arrays.asList(server1, server2);
+
+        Image image = mock(Image.class);
+        when(server1.getImage()).thenReturn(image);
+        when(server2.getImage()).thenReturn(image);
+        when(image.getId()).thenReturn("test-image-id");
+
+        Flavor flavor = mock(Flavor.class);
+        when(server1.getFlavor()).thenReturn(flavor);
+        when(server2.getFlavor()).thenReturn(flavor);
+        when(flavor.getId()).thenReturn("test-flavor-id");
+
+        // Act
+        heatbridge.buildAddVserversToAaiAction("test-genericVnf-id", "test-vfModule-id", servers);
+
+        // Assert
+        ArgumentCaptor<AAIResourceUri> captor = ArgumentCaptor.forClass(AAIResourceUri.class);
+        verify(transaction, times(2)).create(captor.capture(), any(Vserver.class));
+
+        List<AAIResourceUri> uris = captor.getAllValues();
+        assertEquals(AAIUriFactory.createResourceUri(AAIObjectType.VSERVER, CLOUD_OWNER, REGION_ID, TENANT_ID,
+                server1.getId()), uris.get(0));
+        assertEquals(AAIUriFactory.createResourceUri(AAIObjectType.VSERVER, CLOUD_OWNER, REGION_ID, TENANT_ID,
+                server2.getId()), uris.get(1));
+    }
+
+    @Test
+    public void testCreateRelationships() throws HeatBridgeException {
+        AaiHelper aaiHelper = new AaiHelper();
+        // Arrange
+        Server server1 = mock(Server.class);
+
+        when(server1.getId()).thenReturn("test-server1-id");
+        when(server1.getHypervisorHostname()).thenReturn("test-hypervisor");
+        when(server1.getName()).thenReturn("test-server1-name");
+        when(server1.getStatus()).thenReturn(Status.ACTIVE);
+        when(server1.getLinks()).thenReturn(new ArrayList<>());
+
+        // HypervisorHostname is not set
+        Server server2 = mock(Server.class);
+        when(server2.getId()).thenReturn("test-server1-id");
+        when(server2.getName()).thenReturn("test-server1-name");
+        when(server2.getStatus()).thenReturn(Status.ACTIVE);
+        when(server2.getLinks()).thenReturn(new ArrayList<>());
+
+        // HypervisorHostname is empty string
+        Server server3 = mock(Server.class);
+        when(server3.getId()).thenReturn("test-server1-id");
+        when(server3.getHypervisorHostname()).thenReturn("");
+        when(server3.getName()).thenReturn("test-server1-name");
+        when(server3.getStatus()).thenReturn(Status.ACTIVE);
+        when(server3.getLinks()).thenReturn(new ArrayList<>());
+
+        org.onap.aai.domain.yang.RelationshipList relList = aaiHelper.getVserverRelationshipList(CLOUD_OWNER, REGION_ID,
+                "test-genericVnf-id", "test-vfModule-id", server1);
+        assertEquals(4, relList.getRelationship().size());
+
+        org.onap.aai.domain.yang.RelationshipList relList2 = aaiHelper.getVserverRelationshipList(CLOUD_OWNER,
+                REGION_ID, "test-genericVnf-id", "test-vfModule-id", server2);
+        assertEquals(3, relList2.getRelationship().size());
+
+        org.onap.aai.domain.yang.RelationshipList relList3 = aaiHelper.getVserverRelationshipList(CLOUD_OWNER,
+                REGION_ID, "test-genericVnf-id", "test-vfModule-id", server3);
+        assertEquals(3, relList3.getRelationship().size());
+    }
+
+
     @Test
     public void testUpdateImagesToAai() throws HeatBridgeException {
         // Arrange