Update code to filter null or empty images 40/114040/1
authorSmokowski, Steven <steve.smokowski@att.com>
Tue, 20 Oct 2020 14:14:33 +0000 (10:14 -0400)
committerBenjamin, Max (mb388a) <mb388a@att.com>
Tue, 20 Oct 2020 14:14:34 +0000 (10:14 -0400)
Update code to filter null or empty images

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

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 6a62a5d..45b2924 100644 (file)
@@ -245,7 +245,7 @@ public class HeatBridgeImpl implements HeatBridgeApi {
     @Override
     public List<org.openstack4j.model.compute.Image> extractOpenstackImagesFromServers(final List<Server> servers) {
         Objects.requireNonNull(osClient, ERR_MSG_NULL_OS_CLIENT);
-        return servers.stream().map(Server::getImage)
+        return servers.stream().filter(s -> s.getImage() != null).map(Server::getImage)
                 .filter(distinctByProperty(org.openstack4j.model.compute.Image::getId)).collect(Collectors.toList());
     }
 
index 531496c..ebc7c3a 100644 (file)
@@ -102,6 +102,8 @@ import org.openstack4j.model.network.Port;
 import org.openstack4j.model.network.Subnet;
 import org.openstack4j.openstack.heat.domain.HeatResource;
 import org.openstack4j.openstack.heat.domain.HeatResource.Resources;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.core.env.Environment;
 import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.core.type.TypeReference;
@@ -118,6 +120,8 @@ public class HeatBridgeImplTest {
     private static final String TENANT_ID = "7320ec4a5b9d4589ba7c4412ccfd290f";
     private static final ObjectMapper MAPPER = new ObjectMapper();
 
+    private static Logger logger = LoggerFactory.getLogger(HeatBridgeImplTest.class);
+
     @Mock
     private OpenstackClient osClient;
 
@@ -138,6 +142,12 @@ public class HeatBridgeImplTest {
     @Mock
     private Server server;
 
+    @Mock
+    private Server server2;
+
+    @Mock
+    private Image image;
+
     @Mock
     private AAIDSLQueryClient dSLQueryClient;
 
@@ -626,6 +636,25 @@ public class HeatBridgeImplTest {
         verify(osClient, times(5)).getNetworkById(anyString());
     }
 
+
+    @Test
+    public void testExtractOpenstackImagesFromServers() throws HeatBridgeException {
+        // Arrange
+        List<Server> serverList = new ArrayList<>();
+        serverList.add(server);
+        serverList.add(server2);
+        when(server.getImage()).thenReturn(null);
+        when(server.getImage()).thenReturn(image);
+        when(image.getId()).thenReturn("imageId");
+        // Act
+
+        List<Image> images = heatbridge.extractOpenstackImagesFromServers(serverList);
+
+
+        // Assert
+        assertEquals(1, images.size());
+    }
+
     private List<? extends Resource> extractTestStackResources() {
         List<HeatResource> stackResources = null;
         try {
@@ -638,6 +667,7 @@ public class HeatBridgeImplTest {
         return stackResources;
     }
 
+
     private String readTestResourceFile(String filePath) {
         String content = null;
         String pathname = Objects.requireNonNull(getClass().getClassLoader().getResource(filePath)).getFile();