add new query for requestdb 73/97573/1
authorPlummer, Brittany <brittany.plummer@att.com>
Thu, 24 Oct 2019 18:42:15 +0000 (14:42 -0400)
committerBenjamin, Max (mb388a) <mb388a@att.com>
Thu, 24 Oct 2019 18:42:16 +0000 (14:42 -0400)
Updated RequestDbClient to call new request mapping to query for
IN_PROGRESS volumeGroup and vfModule requests older than two minutes.

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

adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/InfraActiveRequestsRepositoryCustomController.java
adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/InfraActiveRequestsRepositoryCustomControllerTest.java
adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/client/RequestsDbClientTest.java
mso-api-handlers/mso-requests-db-repositories/src/main/java/org/onap/so/db/request/data/repository/InfraActiveRequestsRepository.java
mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/client/RequestsDbClient.java

index f6a0aec..28e931a 100644 (file)
@@ -74,4 +74,9 @@ public class InfraActiveRequestsRepositoryCustomController {
             @RequestParam(value = "maxResult", required = false) Integer maxResult) {
         return infraActiveRequestsRepository.getInfraActiveRequests(filters, startTime, endTime, maxResult);
     }
+
+    @RequestMapping(method = RequestMethod.GET, value = "/infraActiveRequests/getInProgressVolumeGroupsAndVfModules")
+    public List<InfraActiveRequests> getInProgressVolumeGroupsAndVfModules() {
+        return infraActiveRequestsRepository.getInProgressVolumeGroupsAndVfModules();
+    }
 }
index 4ed3285..896138f 100644 (file)
 package org.onap.so.adapters.requestsdb;
 
 
+import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
+import java.sql.Timestamp;
+import java.time.Instant;
+import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -33,6 +38,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.onap.so.db.request.beans.InfraActiveRequests;
 import org.onap.so.db.request.data.controller.InstanceNameDuplicateCheckRequest;
+import org.onap.so.serviceinstancebeans.ModelType;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.test.web.client.TestRestTemplate;
 import org.springframework.boot.web.server.LocalServerPort;
@@ -91,14 +97,6 @@ public class InfraActiveRequestsRepositoryCustomControllerTest extends RequestsA
 
     @Before
     public void setup() {
-
-        headers = new HttpHeaders();
-        restTemplate = new TestRestTemplate("test", "test");
-
-        headers.set("Accept", MediaType.APPLICATION_JSON);
-        headers.set("Content-Type", MediaType.APPLICATION_JSON);
-        headers.set("Authorization", msoAdaptersAuth);
-
         infraActiveRequests = new InfraActiveRequests();
 
         infraActiveRequests.setRequestId(UUID.randomUUID().toString());
@@ -126,12 +124,22 @@ public class InfraActiveRequestsRepositoryCustomControllerTest extends RequestsA
         infraActiveRequests
                 .setRequestUrl("http://localhost:8080/onap/so/infra/serviceInstantiation/v7/serviceInstances");
 
-        HttpEntity<String> entity = new HttpEntity(infraActiveRequests, headers);
+        saveInfraActiveRequest(infraActiveRequests);
+    }
+
+    public void saveInfraActiveRequest(InfraActiveRequests request) {
+        headers = new HttpHeaders();
+        restTemplate = new TestRestTemplate("test", "test");
+
+        headers.set("Accept", MediaType.APPLICATION_JSON);
+        headers.set("Content-Type", MediaType.APPLICATION_JSON);
+        headers.set("Authorization", msoAdaptersAuth);
+
+        HttpEntity<String> entity = new HttpEntity(request, headers);
 
         UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(createURLWithPort("/infraActiveRequests"));
         ResponseEntity<String> response =
                 restTemplate.exchange(builder.toUriString(), HttpMethod.POST, entity, String.class);
-
         assertEquals(201, response.getStatusCodeValue());
     }
 
@@ -297,4 +305,38 @@ public class InfraActiveRequestsRepositoryCustomControllerTest extends RequestsA
         assertEquals(200, response.getStatusCodeValue());
         assertEquals(null, response.getBody());
     }
+
+    @Test
+    public void getInProgressVolumeGroupsAndVfModulesTest() {
+        boolean expectedReturned = false;
+        InfraActiveRequests request = new InfraActiveRequests();
+        request.setRequestId(UUID.randomUUID().toString());
+        request.setVfModuleId(UUID.randomUUID().toString());
+        request.setRequestStatus("IN_PROGRESS");
+        request.setRequestScope(ModelType.vfModule.toString());
+        Instant startInstant = Instant.now().minus(3, ChronoUnit.MINUTES);
+        request.setStartTime(Timestamp.from(startInstant));
+        request.setRequestAction("create");
+        saveInfraActiveRequest(request);
+
+        UriComponentsBuilder builder = UriComponentsBuilder
+                .fromHttpUrl(createURLWithPort("/infraActiveRequests/getInProgressVolumeGroupsAndVfModules"));
+
+        HttpEntity<String> entity = new HttpEntity<String>(headers);
+
+        ResponseEntity<List<InfraActiveRequests>> response = restTemplate.exchange(builder.toUriString(),
+                HttpMethod.GET, entity, new ParameterizedTypeReference<List<InfraActiveRequests>>() {});
+
+        List<InfraActiveRequests> responseList = response.getBody();
+
+        assertEquals(200, response.getStatusCodeValue());
+
+        for (InfraActiveRequests result : responseList) {
+            if (result.getRequestId().equals(request.getRequestId())) {
+                assertThat(request, sameBeanAs(result).ignoring("modifyTime"));
+                expectedReturned = true;
+            }
+        }
+        assertTrue(expectedReturned);
+    }
 }
index 49291b6..6788737 100644 (file)
@@ -27,6 +27,8 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import java.sql.Timestamp;
+import java.time.Instant;
+import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -41,6 +43,7 @@ import org.onap.so.db.request.beans.OperationStatus;
 import org.onap.so.db.request.beans.OperationalEnvDistributionStatus;
 import org.onap.so.db.request.beans.OperationalEnvServiceModelStatus;
 import org.onap.so.db.request.beans.RequestProcessingData;
+import org.onap.so.serviceinstancebeans.ModelType;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.web.server.LocalServerPort;
 
@@ -314,4 +317,20 @@ public class RequestsDbClientTest extends RequestsAdapterBase {
 
         verifyInfraActiveRequests(infraActiveRequestsResponse.get(0));
     }
+
+    @Test
+    public void getInProgressVolumeGroupsAndVfModulesTest() {
+        InfraActiveRequests request = new InfraActiveRequests();
+        request.setRequestId(UUID.randomUUID().toString());
+        request.setVfModuleId(UUID.randomUUID().toString());
+        request.setRequestStatus("IN_PROGRESS");
+        request.setRequestScope(ModelType.vfModule.toString());
+        Instant startInstant = Instant.now().minus(3, ChronoUnit.MINUTES);
+        request.setStartTime(Timestamp.from(startInstant));
+        request.setRequestAction("create");
+        requestsDbClient.save(request);
+
+        List<InfraActiveRequests> infraActiveRequests = requestsDbClient.getInProgressVolumeGroupsAndVfModules();
+        assertThat(request, sameBeanAs(infraActiveRequests.get(0)).ignoring("modifyTime"));
+    }
 }
index a146998..e2c7aef 100644 (file)
@@ -25,6 +25,7 @@ import java.util.List;
 import org.onap.so.db.request.beans.InfraActiveRequests;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.rest.core.annotation.RepositoryRestResource;
 
 
@@ -47,4 +48,8 @@ public interface InfraActiveRequestsRepository
     List<InfraActiveRequests> findByEndTimeLessThan(Date endTime, Pageable request);
 
     List<InfraActiveRequests> findByStartTimeLessThanAndEndTime(Date startTime, Date endTime, Pageable request);
+
+    @Query(value = "SELECT * FROM infra_active_requests WHERE request_status = 'IN_PROGRESS' AND (request_scope = 'volumeGroup' OR request_scope = 'vfModule') AND start_time < (NOW() - INTERVAL 2 MINUTE)",
+            nativeQuery = true)
+    List<InfraActiveRequests> getInProgressVolumeGroupsAndVfModules();
 }
index 99c1d1e..ef946bf 100644 (file)
@@ -115,6 +115,8 @@ public class RequestsDbClient {
 
     private String getInfraActiveRequests = "/infraActiveRequests/v1/getInfraActiveRequests";
 
+    private String getInProgressVolumeGroupsAndVfModules = "/infraActiveRequests/getInProgressVolumeGroupsAndVfModules";
+
     private static final String findBySoRequestIdAndGroupIdAndName =
             "/requestProcessingData/search/findOneBySoRequestIdAndGroupingIdAndName";
 
@@ -185,6 +187,15 @@ public class RequestsDbClient {
         }
     }
 
+    public List<InfraActiveRequests> getInProgressVolumeGroupsAndVfModules() {
+        HttpHeaders headers = getHttpHeaders();
+        URI uri = getUri(endpoint + getInProgressVolumeGroupsAndVfModules);
+        HttpEntity<Map<String, List<String>>> entity = new HttpEntity<>(headers);
+        return restTemplate
+                .exchange(uri, HttpMethod.GET, entity, new ParameterizedTypeReference<List<InfraActiveRequests>>() {})
+                .getBody();
+    }
+
     public InfraActiveRequests getInfraActiveRequestbyRequestId(String requestId) {
         try {
             HttpEntity<?> entity = getHttpEntity();