From 7acf11b5b9e2bb0a03c8735f43a0e969c45d06d7 Mon Sep 17 00:00:00 2001 From: "Smokowski, Steven" Date: Tue, 3 Nov 2020 12:02:42 -0500 Subject: us mso workaround to skip shared vip ports Update to filter out cases where ports have no server Issue-ID: SO-3359 Signed-off-by: Benjamin, Max (mb388a) Change-Id: I7400abde420db754716906d7f3a6954734435495 --- .../org/onap/so/heatbridge/HeatBridgeImpl.java | 70 ++++++++++++---------- .../org/onap/so/heatbridge/HeatBridgeImplTest.java | 39 ++++++++++++ 2 files changed, 76 insertions(+), 33 deletions(-) (limited to 'adapters/mso-openstack-adapters') diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/heatbridge/HeatBridgeImpl.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/heatbridge/HeatBridgeImpl.java index 1264727f35..baef24cbc8 100644 --- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/heatbridge/HeatBridgeImpl.java +++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/heatbridge/HeatBridgeImpl.java @@ -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); + } } } } diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/heatbridge/HeatBridgeImplTest.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/heatbridge/HeatBridgeImplTest.java index c9bee2b726..6e653d2963 100644 --- a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/heatbridge/HeatBridgeImplTest.java +++ b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/heatbridge/HeatBridgeImplTest.java @@ -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 stackResources = (List) 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 -- cgit 1.2.3-korg