Remove this useless eq(...) invocation
[so.git] / adapters / mso-adapter-utils / src / test / java / org / onap / so / openstack / utils / MsoHeatUtilsTest.java
index de55e85..85219c3 100644 (file)
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -33,9 +33,7 @@ import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.times;
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import org.junit.Before;
 import org.junit.Rule;
@@ -47,22 +45,32 @@ import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.Spy;
 import org.mockito.junit.MockitoJUnitRunner;
+import org.onap.logging.ref.slf4j.ONAPLogConstants;
+import org.onap.so.db.catalog.beans.HeatTemplate;
+import org.onap.so.db.catalog.beans.NetworkResource;
+import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
+import org.onap.so.db.catalog.beans.VfModule;
+import org.onap.so.db.catalog.beans.VfModuleCustomization;
+import org.onap.so.db.catalog.client.CatalogDbClient;
 import org.onap.so.db.request.beans.CloudApiRequests;
 import org.onap.so.db.request.beans.InfraActiveRequests;
 import org.onap.so.db.request.client.RequestsDbClient;
+import org.onap.so.openstack.beans.CreateStackRequest;
 import org.onap.so.openstack.exceptions.MsoException;
 import org.onap.so.openstack.exceptions.MsoOpenstackException;
 import org.onap.so.openstack.exceptions.MsoStackAlreadyExists;
+import org.slf4j.MDC;
 import org.springframework.core.env.Environment;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.woorea.openstack.base.client.OpenStackResponseException;
 import com.woorea.openstack.heat.Heat;
 import com.woorea.openstack.heat.StackResource;
 import com.woorea.openstack.heat.StackResource.CreateStack;
 import com.woorea.openstack.heat.StackResource.DeleteStack;
 import com.woorea.openstack.heat.model.CreateStackParam;
-import com.woorea.openstack.heat.model.Resource;
 import com.woorea.openstack.heat.model.Resources;
 import com.woorea.openstack.heat.model.Stack;
+import java.util.UUID;
 
 @RunWith(MockitoJUnitRunner.class)
 public class MsoHeatUtilsTest extends MsoHeatUtils {
@@ -101,13 +109,21 @@ public class MsoHeatUtilsTest extends MsoHeatUtils {
     @Mock
     private CreateStack mockCreateStack;
 
+    @Mock
+    private CatalogDbClient catalogDbClient;
+
     private String cloudSiteId = "cloudSiteId";
     private String tenantId = "tenantId";
 
+    private String getRequestId() {
+        return MDC.get(ONAPLogConstants.MDCs.REQUEST_ID);
+    }
+
     @Before
     public void setup() {
         doReturn("15").when(env).getProperty("org.onap.so.adapters.po.pollInterval", "15");
-        doReturn("1").when(env).getProperty("org.onap.so.adapters.po.pollMultiplier", "60");
+        String requestId = UUID.randomUUID().toString();
+        MDC.put(ONAPLogConstants.MDCs.REQUEST_ID, requestId);
     }
 
     @Test
@@ -118,6 +134,7 @@ public class MsoHeatUtilsTest extends MsoHeatUtils {
         stack.setStackStatus("CREATE_IN_PROGRESS");
         stack.setStackStatusReason("Stack Finished");
 
+        String requestId = getRequestId();
         Stack latestStack = new Stack();
         latestStack.setId("id");
         latestStack.setStackName("stackName");
@@ -125,12 +142,29 @@ public class MsoHeatUtilsTest extends MsoHeatUtils {
         latestStack.setStackStatusReason("Stack Finished");
         doReturn(latestStack).when(heatUtils).queryHeatStack(isA(Heat.class), eq("stackName/id"));
         doReturn(heatClient).when(heatUtils).getHeatClient(cloudSiteId, tenantId);
-        Stack actual = heatUtils.pollStackForStatus(1, stack, "CREATE_IN_PROGRESS", cloudSiteId, tenantId);
-        Mockito.verify(stackStatusHandler, times(1)).updateStackStatus(latestStack);
+        Stack actual = heatUtils.pollStackForStatus(1, stack, "CREATE_IN_PROGRESS", cloudSiteId, tenantId, false);
+        Mockito.verify(stackStatusHandler, times(1)).updateStackStatus(latestStack, requestId);
         Mockito.verify(heatUtils, times(1)).queryHeatStack(isA(Heat.class), eq("stackName/id"));
         assertEquals(true, actual != null);
     }
 
+    @Test
+    public final void pollStackForStatus_No_Polling_Test() throws MsoException, IOException {
+        Stack stack = new Stack();
+        stack.setId("id");
+        stack.setStackName("stackName");
+        stack.setStackStatus("CREATE_IN_PROGRESS");
+        stack.setStackStatusReason("Stack Finished");
+        String requestId = getRequestId();
+        doNothing().when(stackStatusHandler).updateStackStatus(stack, requestId);
+        doReturn(stack).when(heatUtils).queryHeatStack(isA(Heat.class), eq("stackName/id"));
+        doReturn(heatClient).when(heatUtils).getHeatClient(cloudSiteId, tenantId);
+        doReturn("61").when(env).getProperty("org.onap.so.adapters.po.pollInterval", "15");
+        Stack actual = heatUtils.pollStackForStatus(1, stack, "CREATE_IN_PROGRESS", cloudSiteId, tenantId, false);
+        Mockito.verify(stackStatusHandler, times(1)).updateStackStatus(stack, requestId);
+        Mockito.verify(heatUtils, times(1)).queryHeatStack(isA(Heat.class), eq("stackName/id"));
+        assertEquals(true, actual != null);
+    }
 
     @Test
     public final void pollStackForStatus_Polling_Exhausted_Test() throws MsoException, IOException {
@@ -139,12 +173,13 @@ public class MsoHeatUtilsTest extends MsoHeatUtils {
         stack.setStackName("stackName");
         stack.setStackStatus("CREATE_IN_PROGRESS");
         stack.setStackStatusReason("Stack Finished");
-        doNothing().when(stackStatusHandler).updateStackStatus(stack);
+        String requestId = getRequestId();
+        doNothing().when(stackStatusHandler).updateStackStatus(stack, requestId);
         doReturn(stack).when(heatUtils).queryHeatStack(isA(Heat.class), eq("stackName/id"));
         doReturn(heatClient).when(heatUtils).getHeatClient(cloudSiteId, tenantId);
-        Stack actual = heatUtils.pollStackForStatus(1, stack, "CREATE_IN_PROGRESS", cloudSiteId, tenantId);
-        Mockito.verify(stackStatusHandler, times(1)).updateStackStatus(stack);
-        Mockito.verify(heatUtils, times(1)).queryHeatStack(isA(Heat.class), eq("stackName/id"));
+        Stack actual = heatUtils.pollStackForStatus(1, stack, "CREATE_IN_PROGRESS", cloudSiteId, tenantId, false);
+        Mockito.verify(stackStatusHandler, times(5)).updateStackStatus(stack, requestId);
+        Mockito.verify(heatUtils, times(5)).queryHeatStack(isA(Heat.class), eq("stackName/id"));
         assertEquals(true, actual != null);
     }
 
@@ -154,12 +189,13 @@ public class MsoHeatUtilsTest extends MsoHeatUtils {
         stack.setId("id");
         stack.setStackName("stackName");
         stack.setStackStatus("CREATE_IN_PROGRESS");
-        stack.setStackStatusReason("Stack Finished");
+        stack.setStackStatusReason("Stack In Progress");
         CreateStackParam createStackParam = new CreateStackParam();
         createStackParam.setStackName("stackName");
 
         exceptionRule.expect(StackCreationException.class);
-        exceptionRule.expectMessage("Stack rollback suppressed, stack not deleted");
+        exceptionRule.expectMessage(
+                "Stack Creation Failed Openstack Status: CREATE_IN_PROGRESS Status Reason: Stack In Progress. Stack rollback suppressed, stack not deleted");
         heatUtils.postProcessStackCreate(stack, false, 120, false, cloudSiteId, tenantId, createStackParam);
     }
 
@@ -255,17 +291,15 @@ public class MsoHeatUtilsTest extends MsoHeatUtils {
         CreateStackParam createStackParam = new CreateStackParam();
         createStackParam.setStackName("stackName");
         doReturn(heatClient).when(heatUtils).getHeatClient(cloudSiteId, tenantId);
-        doNothing().when(heatUtils).postProcessStackDelete(deletedStack);
         doReturn(null).when(heatUtils).executeAndRecordOpenstackRequest(mockDeleteStack);
         doReturn(stackResource).when(heatClient).getStacks();
         doReturn(mockDeleteStack).when(stackResource).deleteByName("stackName/id");
-        doReturn(deletedStack).when(heatUtils).pollStackForStatus(120, stack, "DELETE_IN_PROGRESS", cloudSiteId,
-                tenantId);
 
         heatUtils.handleUnknownCreateStackFailure(stack, 120, cloudSiteId, tenantId);
         Mockito.verify(heatUtils, times(1)).executeAndRecordOpenstackRequest(mockDeleteStack);
-        Mockito.verify(heatUtils, times(1)).pollStackForStatus(120, stack, "DELETE_IN_PROGRESS", cloudSiteId, tenantId);
-        Mockito.verify(heatUtils, times(1)).postProcessStackDelete(deletedStack);
+        Mockito.verify(heatUtils, times(0)).pollStackForStatus(120, stack, "DELETE_IN_PROGRESS", cloudSiteId, tenantId,
+                true);
+        Mockito.verify(heatUtils, times(0)).postProcessStackDelete(deletedStack);
     }
 
 
@@ -320,29 +354,16 @@ public class MsoHeatUtilsTest extends MsoHeatUtils {
         createdStack.setStackStatus("CREATE_COMPLETE");
         createdStack.setStackStatusReason("Stack Created");
 
-
-
-        List<Resource> resources = new ArrayList<>();
-        Resource resource = new Resource();
-        resource.setName("KeypairName");
-        resource.setLogicalResourceId("KeypairName");
-        resource.setType("OS::Nova::KeyPair");
-        resources.add(resource);
-
         CreateStackParam createStackParam = new CreateStackParam();
         createStackParam.setStackName("stackName");
 
-        doReturn(resources).when(mockResources).getList();
-        doReturn(mockResources).when(heatUtils).queryStackResources(cloudSiteId, tenantId, "stackName", 2);
-        doNothing().when(novaClient).deleteKeyPair(cloudSiteId, tenantId, "KeypairName");
         doReturn(null).when(heatUtils).handleUnknownCreateStackFailure(stack, 120, cloudSiteId, tenantId);
         doReturn(createdStack).when(heatUtils).createStack(createStackParam, cloudSiteId, tenantId);
         doReturn(createdStack).when(heatUtils).processCreateStack(cloudSiteId, tenantId, 120, true, createdStack,
                 createStackParam, false);
 
         heatUtils.handleKeyPairConflict(cloudSiteId, tenantId, createStackParam, 120, true, stack);
-        Mockito.verify(heatUtils, times(1)).queryStackResources(cloudSiteId, tenantId, "stackName", 2);
-        Mockito.verify(novaClient, times(1)).deleteKeyPair(cloudSiteId, tenantId, "KeypairName");
+        Mockito.verify(novaClient, times(1)).deleteKeyPair(cloudSiteId, tenantId, "hst3bbfnm0011vm001");
         Mockito.verify(heatUtils, times(1)).handleUnknownCreateStackFailure(stack, 120, cloudSiteId, tenantId);
         Mockito.verify(heatUtils, times(1)).createStack(createStackParam, cloudSiteId, tenantId);
         Mockito.verify(heatUtils, times(1)).processCreateStack(cloudSiteId, tenantId, 120, true, createdStack,
@@ -369,12 +390,13 @@ public class MsoHeatUtilsTest extends MsoHeatUtils {
         createStackParam.setStackName("stackName");
 
         doReturn(createdStack).when(heatUtils).pollStackForStatus(120, stack, "CREATE_IN_PROGRESS", cloudSiteId,
-                tenantId);
+                tenantId, false);
         doReturn(createdStack).when(heatUtils).postProcessStackCreate(createdStack, true, 120, true, cloudSiteId,
                 tenantId, createStackParam);
 
         heatUtils.processCreateStack(cloudSiteId, tenantId, 120, true, stack, createStackParam, true);
-        Mockito.verify(heatUtils, times(1)).pollStackForStatus(120, stack, "CREATE_IN_PROGRESS", cloudSiteId, tenantId);
+        Mockito.verify(heatUtils, times(1)).pollStackForStatus(120, stack, "CREATE_IN_PROGRESS", cloudSiteId, tenantId,
+                false);
         Mockito.verify(heatUtils, times(1)).postProcessStackCreate(createdStack, true, 120, true, cloudSiteId, tenantId,
                 createStackParam);
     }
@@ -399,11 +421,12 @@ public class MsoHeatUtilsTest extends MsoHeatUtils {
         createStackParam.setStackName("stackName");
 
         doThrow(new StackCreationException("Error")).when(heatUtils).pollStackForStatus(120, stack,
-                "CREATE_IN_PROGRESS", cloudSiteId, tenantId);
+                "CREATE_IN_PROGRESS", cloudSiteId, tenantId, false);
         exceptionRule.expect(MsoException.class);
         exceptionRule.expectMessage("Error");
         heatUtils.processCreateStack(cloudSiteId, tenantId, 120, true, stack, createStackParam, true);
-        Mockito.verify(heatUtils, times(1)).pollStackForStatus(120, stack, "CREATE_IN_PROGRESS", cloudSiteId, tenantId);
+        Mockito.verify(heatUtils, times(1)).pollStackForStatus(120, stack, "CREATE_IN_PROGRESS", cloudSiteId, tenantId,
+                false);
         Mockito.verify(heatUtils, times(1)).postProcessStackCreate(stack, true, 120, true, cloudSiteId, tenantId,
                 createStackParam);
     }
@@ -414,7 +437,9 @@ public class MsoHeatUtilsTest extends MsoHeatUtils {
         CreateStackParam createStackParam = new CreateStackParam();
         createStackParam.setStackName("stackName");
 
+        String requestId = getRequestId();
         doReturn(heatClient).when(heatUtils).getHeatClient(cloudSiteId, tenantId);
+        doNothing().when(heatUtils).saveStackRequest(eq(createStackParam), isNull(), eq("stackName"));
         doReturn(stackResource).when(heatClient).getStacks();
         doReturn(mockCreateStack).when(stackResource).create(createStackParam);
 
@@ -422,18 +447,29 @@ public class MsoHeatUtilsTest extends MsoHeatUtils {
 
         heatUtils.createStack(createStackParam, cloudSiteId, tenantId);
         Mockito.verify(stackResource, times(1)).create(createStackParam);
-        Mockito.verify(heatUtils, times(1)).saveStackRequest(eq(createStackParam), isNull(), eq("stackName"));
+        Mockito.verify(heatUtils, times(1)).saveStackRequest(createStackParam, requestId, "stackName");
         Mockito.verify(heatClient, times(1)).getStacks();
         Mockito.verify(stackResource, times(1)).create(createStackParam);
     }
 
     @Test
     public final void saveStack_Test() throws MsoException, IOException, NovaClientException {
+
         CreateStackParam createStackParam = new CreateStackParam();
         createStackParam.setStackName("stackName");
         Map<String, Object> parameters = new HashMap<String, Object>();
         parameters.put("test", "value");
+        String environment =
+                "parameters:\n  mmn_volume_name_1: \"data-mn-v-vdb\"\n  mmn_volume_name_2: \"arch-mn-v-vdc\"\n";
         createStackParam.setParameters(parameters);
+        createStackParam.setEnvironment(environment);
+
+        CreateStackRequest createStackRequest = new CreateStackRequest();
+        createStackRequest.setEnvironment(environment);
+        createStackRequest.setParameters(parameters);
+        ObjectMapper mapper = new ObjectMapper();
+        String stackRequest = mapper.writeValueAsString(createStackRequest);
+
         InfraActiveRequests request = new InfraActiveRequests();
         request.setRequestId("requestId");
         doReturn(request).when(requestDbClient).getInfraActiveRequestbyRequestId("requestId");
@@ -441,7 +477,8 @@ public class MsoHeatUtilsTest extends MsoHeatUtils {
         heatUtils.saveStackRequest(createStackParam, "requestId", "stackName");
         Mockito.verify(requestDbClient, times(1)).updateInfraActiveRequests(request);
         assertNotNull(request.getCloudApiRequests().get(0));
-        assertEquals(request.getCloudApiRequests().get(0).getRequestId(), "requestId");
+        assertEquals("requestId", request.getCloudApiRequests().get(0).getRequestId());
+        assertEquals(stackRequest, request.getCloudApiRequests().get(0).getRequestBody());
     }
 
     @Test
@@ -527,13 +564,48 @@ public class MsoHeatUtilsTest extends MsoHeatUtils {
         createStackParam.setStackName("stackName");
 
         doThrow(new StackCreationException("Error")).when(heatUtils).pollStackForStatus(120, stack,
-                "CREATE_IN_PROGRESS", cloudSiteId, tenantId);
+                "CREATE_IN_PROGRESS", cloudSiteId, tenantId, false);
 
         exceptionRule.expect(MsoException.class);
         exceptionRule.expectMessage("Error");
         heatUtils.processCreateStack(cloudSiteId, tenantId, 120, false, stack, createStackParam, true);
-        Mockito.verify(heatUtils, times(1)).pollStackForStatus(120, stack, "CREATE_IN_PROGRESS", cloudSiteId, tenantId);
+        Mockito.verify(heatUtils, times(1)).pollStackForStatus(120, stack, "CREATE_IN_PROGRESS", cloudSiteId, tenantId,
+                false);
         Mockito.verify(heatUtils, times(0)).handleUnknownCreateStackFailure(stack, 120, cloudSiteId, tenantId);
     }
 
+    @Test
+    public void testGetVfHeatTimeoutValue() {
+
+        VfModuleCustomization vfmc = new VfModuleCustomization();
+        VfModule vf = new VfModule();
+        HeatTemplate heat = new HeatTemplate();
+        heat.setTimeoutMinutes(110);
+        vf.setModuleHeatTemplate(heat);
+        vfmc.setVfModule(vf);
+
+        Mockito.when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("uuid")).thenReturn(vfmc);
+
+        int timeout = heatUtils.getVfHeatTimeoutValue("uuid", false);
+        assertEquals(110, timeout);
+        Mockito.verify(catalogDbClient, times(1)).getVfModuleCustomizationByModelCuztomizationUUID("uuid");
+    }
+
+    @Test
+    public void testGetNetworkHeatTimeoutValue() {
+
+        NetworkResourceCustomization mc = new NetworkResourceCustomization();
+        NetworkResource nr = new NetworkResource();
+        HeatTemplate heat = new HeatTemplate();
+        heat.setTimeoutMinutes(110);
+        nr.setHeatTemplate(heat);
+        mc.setNetworkResource(nr);
+
+        Mockito.when(catalogDbClient.getNetworkResourceCustomizationByModelCustomizationUUID("uuid")).thenReturn(mc);
+
+        int timeout = heatUtils.getNetworkHeatTimeoutValue("uuid", "type");
+        assertEquals(110, timeout);
+        Mockito.verify(catalogDbClient, times(1)).getNetworkResourceCustomizationByModelCustomizationUUID("uuid");
+    }
+
 }