From 3bc97460fa4be6fcaff87ff71da5348ed647dae8 Mon Sep 17 00:00:00 2001 From: nameisaravind Date: Thu, 3 Jun 2021 12:52:15 -0400 Subject: [PATCH] infra scan widget api support (#217) * infra scan widget api support * pom version update * pom updated * cleanup --- pom.xml | 2 +- .../request/InfraStructureRequest.java | 72 +++++++++++++++++++ .../rest/InfraStructureController.java | 13 ++++ .../dashboard/rest/WidgetController.java | 14 +++- .../service/InfraStructureService.java | 9 +++ .../service/InfraStructureServiceImpl.java | 27 +++++++ .../dashboard/config/TestAuthConfig.java | 5 ++ .../dashboard/config/TestConfig.java | 4 ++ .../config/TestDefaultAuthConfig.java | 4 ++ 9 files changed, 146 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/capitalone/dashboard/request/InfraStructureRequest.java create mode 100644 src/main/java/com/capitalone/dashboard/rest/InfraStructureController.java create mode 100644 src/main/java/com/capitalone/dashboard/service/InfraStructureService.java create mode 100644 src/main/java/com/capitalone/dashboard/service/InfraStructureServiceImpl.java diff --git a/pom.xml b/pom.xml index e26a4ef8..e3fb906d 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ api jar ${project.groupId}:${project.artifactId} - 3.4.19-SNAPSHOT + 3.4.20-SNAPSHOT Hygieia Rest API Layer https://github.com/Hygieia/api diff --git a/src/main/java/com/capitalone/dashboard/request/InfraStructureRequest.java b/src/main/java/com/capitalone/dashboard/request/InfraStructureRequest.java new file mode 100644 index 00000000..2d7b9eb8 --- /dev/null +++ b/src/main/java/com/capitalone/dashboard/request/InfraStructureRequest.java @@ -0,0 +1,72 @@ +package com.capitalone.dashboard.request; +import com.capitalone.dashboard.model.CollectorType; +import org.bson.types.ObjectId; + +import javax.validation.constraints.NotNull; + +public class InfraStructureRequest extends BaseRequest { + @NotNull + private ObjectId componentId; + private Integer max; + private Integer numberOfDays; + private Long dateBegins; + private Long dateEnds; + private CollectorType type; + private ObjectId collectorItemId; + + public ObjectId getComponentId() { + return componentId; + } + + public void setComponentId(ObjectId componentId) { + this.componentId = componentId; + } + + public Integer getMax() { + return max; + } + + public void setMax(Integer max) { + this.max = max; + } + + public Integer getNumberOfDays() { + return numberOfDays; + } + + public void setNumberOfDays(Integer numberOfDays) { + this.numberOfDays = numberOfDays; + } + + public Long getDateBegins() { + return dateBegins; + } + + public void setDateBegins(Long dateBegins) { + this.dateBegins = dateBegins; + } + + public Long getDateEnds() { + return dateEnds; + } + + public void setDateEnds(Long dateEnds) { + this.dateEnds = dateEnds; + } + + public CollectorType getType() { + return type; + } + + public void setType(CollectorType type) { + this.type = type; + } + + public ObjectId getCollectorItemId() { + return collectorItemId; + } + + public void setCollectorItemId(ObjectId collectorItemId) { + this.collectorItemId = collectorItemId; + } +} diff --git a/src/main/java/com/capitalone/dashboard/rest/InfraStructureController.java b/src/main/java/com/capitalone/dashboard/rest/InfraStructureController.java new file mode 100644 index 00000000..62e5f31a --- /dev/null +++ b/src/main/java/com/capitalone/dashboard/rest/InfraStructureController.java @@ -0,0 +1,13 @@ +package com.capitalone.dashboard.rest; + +import com.capitalone.dashboard.service.InfraStructureService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class InfraStructureController { + + @Autowired + public InfraStructureController(InfraStructureService infraStructureService) { + } +} diff --git a/src/main/java/com/capitalone/dashboard/rest/WidgetController.java b/src/main/java/com/capitalone/dashboard/rest/WidgetController.java index ee53fa68..5b7b733b 100644 --- a/src/main/java/com/capitalone/dashboard/rest/WidgetController.java +++ b/src/main/java/com/capitalone/dashboard/rest/WidgetController.java @@ -9,6 +9,9 @@ import com.capitalone.dashboard.request.LibraryPolicyRequest; import com.capitalone.dashboard.service.CodeQualityService; import com.capitalone.dashboard.service.LibraryPolicyService; +import com.capitalone.dashboard.model.InfrastructureScan; +import com.capitalone.dashboard.request.InfraStructureRequest; +import com.capitalone.dashboard.service.InfraStructureService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; @@ -24,14 +27,16 @@ public class WidgetController { private final CodeQualityService codeQualityService; private final LibraryPolicyService libraryPolicyService; + private final InfraStructureService infraStructureService; @Autowired - public WidgetController(CodeQualityService codeQualityService, LibraryPolicyService libraryPolicyService) { + public WidgetController(CodeQualityService codeQualityService, LibraryPolicyService libraryPolicyService, + InfraStructureService infraStructureService) { this.codeQualityService = codeQualityService; this.libraryPolicyService = libraryPolicyService; + this.infraStructureService = infraStructureService; } - @RequestMapping(value = "/ui-widget/code-quality", method = GET, produces = APPLICATION_JSON_VALUE) public DataResponse> widgetCodeQuality(@Valid CodeQualityRequest request) { request.setType(CodeQualityType.SecurityAnalysis); @@ -43,5 +48,8 @@ public DataResponse> widgetLibraryPolicy(@Valid Li return libraryPolicyService.getLibraryPolicyForWidget(request); } - + @RequestMapping(value = "/ui-widget/infra-scan", method = GET, produces = APPLICATION_JSON_VALUE) + public DataResponse> widgetInfraScan(@Valid InfraStructureRequest request) { + return infraStructureService.getInfraScanForWidget(request); + } } diff --git a/src/main/java/com/capitalone/dashboard/service/InfraStructureService.java b/src/main/java/com/capitalone/dashboard/service/InfraStructureService.java new file mode 100644 index 00000000..a3349f42 --- /dev/null +++ b/src/main/java/com/capitalone/dashboard/service/InfraStructureService.java @@ -0,0 +1,9 @@ +package com.capitalone.dashboard.service; + +import com.capitalone.dashboard.model.DataResponse; +import com.capitalone.dashboard.model.InfrastructureScan; +import com.capitalone.dashboard.request.InfraStructureRequest; + +public interface InfraStructureService { + DataResponse> getInfraScanForWidget(InfraStructureRequest request); +} diff --git a/src/main/java/com/capitalone/dashboard/service/InfraStructureServiceImpl.java b/src/main/java/com/capitalone/dashboard/service/InfraStructureServiceImpl.java new file mode 100644 index 00000000..b40ec65b --- /dev/null +++ b/src/main/java/com/capitalone/dashboard/service/InfraStructureServiceImpl.java @@ -0,0 +1,27 @@ +package com.capitalone.dashboard.service; + +import com.capitalone.dashboard.model.InfrastructureScan; +import com.capitalone.dashboard.model.DataResponse; +import com.capitalone.dashboard.repository.InfrastructureScanRepository; +import com.capitalone.dashboard.request.InfraStructureRequest; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Collections; + +@Service +public class InfraStructureServiceImpl implements InfraStructureService { + + private final InfrastructureScanRepository infrastructureScanRepository; + + @Autowired + public InfraStructureServiceImpl(InfrastructureScanRepository infrastructureScanRepository) { + this.infrastructureScanRepository = infrastructureScanRepository; + } + + @Override + public DataResponse> getInfraScanForWidget(InfraStructureRequest request) { + InfrastructureScan infrastructureScan = infrastructureScanRepository.findTopByCollectorItemIdOrderByTimestampDesc(request.getCollectorItemId()); + return new DataResponse<>(Collections.singletonList(infrastructureScan), System.currentTimeMillis()); + } +} diff --git a/src/test/java/com/capitalone/dashboard/config/TestAuthConfig.java b/src/test/java/com/capitalone/dashboard/config/TestAuthConfig.java index 6d07a100..c31f61e1 100644 --- a/src/test/java/com/capitalone/dashboard/config/TestAuthConfig.java +++ b/src/test/java/com/capitalone/dashboard/config/TestAuthConfig.java @@ -54,6 +54,8 @@ import com.capitalone.dashboard.service.TestResultService; import com.capitalone.dashboard.service.UserInfoService; import com.capitalone.dashboard.service.UserInfoServiceImpl; +import com.capitalone.dashboard.service.InfraStructureService; +import com.capitalone.dashboard.service.InfraStructureServiceImpl; import com.capitalone.dashboard.util.PaginationHeaderUtility; import org.mockito.Mockito; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -318,5 +320,8 @@ public MetadataService metadataService() { @Bean public BuildCommonService buildCommonService() { return Mockito.mock(BuildCommonService.class); } + + @Bean + public InfraStructureService infraStructureService() { return Mockito.mock(InfraStructureService.class); } } diff --git a/src/test/java/com/capitalone/dashboard/config/TestConfig.java b/src/test/java/com/capitalone/dashboard/config/TestConfig.java index 53e62683..c8008054 100644 --- a/src/test/java/com/capitalone/dashboard/config/TestConfig.java +++ b/src/test/java/com/capitalone/dashboard/config/TestConfig.java @@ -46,6 +46,7 @@ import com.capitalone.dashboard.service.TemplateService; import com.capitalone.dashboard.service.TestResultService; import com.capitalone.dashboard.service.UserInfoService; +import com.capitalone.dashboard.service.InfraStructureService; import com.capitalone.dashboard.util.PaginationHeaderUtility; import org.mockito.Mockito; import org.springframework.context.annotation.Bean; @@ -288,4 +289,7 @@ public FeatureFlagService featureFlagService(){ @Bean public BuildCommonService buildCommonService() { return Mockito.mock(BuildCommonService.class); } + + @Bean + public InfraStructureService infraStructureService() { return Mockito.mock(InfraStructureService.class); } } diff --git a/src/test/java/com/capitalone/dashboard/config/TestDefaultAuthConfig.java b/src/test/java/com/capitalone/dashboard/config/TestDefaultAuthConfig.java index 86f17202..e90b008b 100644 --- a/src/test/java/com/capitalone/dashboard/config/TestDefaultAuthConfig.java +++ b/src/test/java/com/capitalone/dashboard/config/TestDefaultAuthConfig.java @@ -52,6 +52,7 @@ import com.capitalone.dashboard.service.TestResultService; import com.capitalone.dashboard.service.UserInfoService; import com.capitalone.dashboard.service.UserInfoServiceImpl; +import com.capitalone.dashboard.service.InfraStructureService; import com.capitalone.dashboard.util.PaginationHeaderUtility; import org.mockito.Mockito; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -300,5 +301,8 @@ public MetadataService metadataService() { @Bean public BuildCommonService buildCommonService() { return Mockito.mock(BuildCommonService.class); } + @Bean + public InfraStructureService infraStructureService() { return Mockito.mock(InfraStructureService.class); } + }