us mso workaround to skip shared vip ports 61/114561/4
authorSmokowski, Steven <steve.smokowski@att.com>
Tue, 3 Nov 2020 17:02:42 +0000 (12:02 -0500)
committerBenjamin, Max (mb388a) <mb388a@att.com>
Tue, 3 Nov 2020 17:45:27 +0000 (12:45 -0500)
Update to filter out cases where ports have no server

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

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

index 1264727..baef24c 100644 (file)
@@ -48,6 +48,7 @@ import javax.ws.rs.NotFoundException;
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.UriBuilder;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.validator.routines.InetAddressValidator;
 import org.onap.aai.domain.yang.Flavor;
 import org.onap.aai.domain.yang.Image;
@@ -357,44 +358,47 @@ public class HeatBridgeImpl implements HeatBridgeApi {
             boolean isL2Multicast = false;
             Port port = osClient.getPortById(portId);
             Network network = osClient.getNetworkById(port.getNetworkId());
-            LInterface lIf = new LInterface();
-            lIf.setInterfaceId(port.getId());
-            lIf.setInterfaceName(port.getName());
-            lIf.setMacaddr(port.getMacAddress());
-            lIf.setNetworkName(network.getName());
-            lIf.setIsPortMirrored(false);
-            lIf.setIsIpUnnumbered(false);
-            lIf.setInMaint(false);
-
-            if (port.getProfile() != null && port.getProfile().get("trusted") != null) {
-                String trusted = port.getProfile().get("trusted").toString();
-                if (Boolean.parseBoolean(trusted)) {
-                    isL2Multicast = true;
+            if (!StringUtils.isEmpty(port.getDeviceId())) {
+                LInterface lIf = new LInterface();
+                lIf.setInterfaceId(port.getId());
+                lIf.setInterfaceName(port.getName());
+                lIf.setMacaddr(port.getMacAddress());
+                lIf.setNetworkName(network.getName());
+                lIf.setIsPortMirrored(false);
+                lIf.setIsIpUnnumbered(false);
+                lIf.setInMaint(false);
+
+                if (port.getProfile() != null && port.getProfile().get("trusted") != null) {
+                    String trusted = port.getProfile().get("trusted").toString();
+                    if (Boolean.parseBoolean(trusted)) {
+                        isL2Multicast = true;
+                    }
                 }
-            }
-            lIf.setL2Multicasting(isL2Multicast);
-            lIf.setInterfaceType(getInterfaceType(nodeType, port.getvNicType()));
-            lIf.setRelationshipList(new RelationshipList());
+                lIf.setL2Multicasting(isL2Multicast);
+                lIf.setInterfaceType(getInterfaceType(nodeType, port.getvNicType()));
+                lIf.setRelationshipList(new RelationshipList());
 
-            if (oobMgtNetIds != null && oobMgtNetIds.contains(port.getNetworkId())) {
-                lIf.setInterfaceRole(OOB_MGT_NETWORK_IDENTIFIER);
-            } else {
-                lIf.setInterfaceRole(port.getvNicType());
-            }
+                if (oobMgtNetIds != null && oobMgtNetIds.contains(port.getNetworkId())) {
+                    lIf.setInterfaceRole(OOB_MGT_NETWORK_IDENTIFIER);
+                } else {
+                    lIf.setInterfaceRole(port.getvNicType());
+                }
 
-            // Update l-interface to the vserver
-            transaction.createIfNotExists(
-                    AAIUriFactory.createResourceUri(
-                            AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(cloudOwner, cloudRegionId)
-                                    .tenant(tenantId).vserver(port.getDeviceId()).lInterface(lIf.getInterfaceName())),
-                    Optional.of(lIf));
+                // Update l-interface to the vserver
+                transaction
+                        .createIfNotExists(
+                                AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure()
+                                        .cloudRegion(cloudOwner, cloudRegionId).tenant(tenantId)
+                                        .vserver(port.getDeviceId()).lInterface(lIf.getInterfaceName())),
+                                Optional.of(lIf));
 
-            updateLInterfaceIps(port, lIf);
+                updateLInterfaceIps(port, lIf);
 
-            if (cloudOwner.equals(env.getProperty("mso.cloudOwner.included", ""))) {
-                Server server = getOpenstackServerById(port.getDeviceId());
-                createVlanAndSriovVF(port, lIf, server.getHypervisorHostname());
-                updateSriovPfToSriovVF(port, lIf);
+                if (cloudOwner.equals(env.getProperty("mso.cloudOwner.included", ""))) {
+                    Server server = getOpenstackServerById(port.getDeviceId());
+                    createVlanAndSriovVF(port, lIf, server.getHypervisorHostname());
+                    updateSriovPfToSriovVF(port, lIf);
+                }
             }
         }
     }
index c9bee2b..6e653d2 100644 (file)
@@ -677,6 +677,45 @@ public class HeatBridgeImplTest {
         verify(osClient, times(5)).getNetworkById(anyString());
     }
 
+    @Test
+    public void testBuildAddVserverLInterfacesToAaiAction_DeviceIdNull()
+            throws HeatBridgeException, JsonParseException, JsonMappingException, IOException {
+        // Arrange
+        List<Resource> stackResources = (List<Resource>) extractTestStackResources();
+        Port port = mock(Port.class);
+        when(port.getId()).thenReturn("test-port-id");
+        when(port.getName()).thenReturn("test-port-name");
+        when(port.getvNicType()).thenReturn(HeatBridgeConstants.OS_SRIOV_PORT_TYPE);
+        when(port.getMacAddress()).thenReturn("78:4f:43:68:e2:78");
+        when(port.getNetworkId()).thenReturn("890a203a-23gg-56jh-df67-731656a8f13a");
+        when(port.getDeviceId()).thenReturn(null);
+        String pfPciId = "0000:08:00.0";
+
+        Network network = mock(Network.class);
+        when(network.getId()).thenReturn("test-network-id");
+        when(network.getNetworkType()).thenReturn(NetworkType.VLAN);
+        when(network.getProviderSegID()).thenReturn("2345");
+
+        when(osClient.getPortById("212a203a-9764-4f42-84ea-731536a8f13a")).thenReturn(port);
+        when(osClient.getPortById("387e3904-8948-43d1-8635-b6c2042b54da")).thenReturn(port);
+        when(osClient.getPortById("70a09dfd-f1c5-4bc8-bd8f-dc539b8d662a")).thenReturn(port);
+        when(osClient.getPortById("12f88b4d-c8a4-4fbd-bcb4-7e36af02430b")).thenReturn(port);
+        when(osClient.getPortById("c54b9f45-b413-4937-bbe4-3c8a5689cfc9")).thenReturn(port);
+        when(osClient.getNetworkById(anyString())).thenReturn(network);
+
+        PInterface pIf = mock(PInterface.class);
+        when(pIf.getInterfaceName()).thenReturn("test-port-id");
+        doNothing().when(heatbridge).updateSriovPfToSriovVF(any(), any());
+
+        // Act
+        heatbridge.buildAddVserverLInterfacesToAaiAction(stackResources, Arrays.asList("1", "2"), "CloudOwner");
+
+        // Assert
+        verify(transaction, times(0)).createIfNotExists(any(AAIResourceUri.class), any(Optional.class));
+        verify(osClient, times(5)).getPortById(anyString());
+        verify(osClient, times(5)).getNetworkById(anyString());
+    }
+
     @Test
     public void testExtractOpenstackImagesFromServers() throws HeatBridgeException {
         // Arrange