This is an automated email from the ASF dual-hosted git repository.
zhengqiwei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git
The following commit(s) were added to refs/heads/master by this push:
new 23d16ae92 [refactor] move code from CollectorController to
CollectorService (#2433)
23d16ae92 is described below
commit 23d16ae92180f5b536fa13b5cdc777e0d2871b3f
Author: Chandrakant Vankayalapati <[email protected]>
AuthorDate: Fri Aug 9 08:42:12 2024 -0700
[refactor] move code from CollectorController to CollectorService (#2433)
Co-authored-by: ceekay <[email protected]>
Co-authored-by: Calvin <[email protected]>
---
.../manager/controller/CollectorController.java | 46 +++-------------------
.../manager/service/CollectorService.java | 31 ++++++++++++---
.../manager/service/impl/CollectorServiceImpl.java | 45 ++++++++++++++++++++-
.../manager/service/CollectorServiceTest.java | 9 ++---
4 files changed, 78 insertions(+), 53 deletions(-)
diff --git
a/manager/src/main/java/org/apache/hertzbeat/manager/controller/CollectorController.java
b/manager/src/main/java/org/apache/hertzbeat/manager/controller/CollectorController.java
index 349191c25..df31ef9d4 100644
---
a/manager/src/main/java/org/apache/hertzbeat/manager/controller/CollectorController.java
+++
b/manager/src/main/java/org/apache/hertzbeat/manager/controller/CollectorController.java
@@ -21,21 +21,13 @@ import static
org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.persistence.criteria.Predicate;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.apache.hertzbeat.common.constants.CommonConstants;
import org.apache.hertzbeat.common.entity.dto.CollectorSummary;
import org.apache.hertzbeat.common.entity.dto.Message;
-import org.apache.hertzbeat.common.entity.manager.Collector;
-import org.apache.hertzbeat.common.util.IpDomainUtil;
-import org.apache.hertzbeat.manager.scheduler.netty.ManageServer;
import org.apache.hertzbeat.manager.service.CollectorService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.data.jpa.domain.Specification;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
@@ -56,9 +48,6 @@ public class CollectorController {
@Autowired
private CollectorService collectorService;
-
- @Autowired(required = false)
- private ManageServer manageServer;
@GetMapping
@Operation(summary = "Get a list of collectors based on query filter
items",
@@ -67,21 +56,8 @@ public class CollectorController {
@Parameter(description = "collector name", example = "tom")
@RequestParam(required = false) final String name,
@Parameter(description = "List current page", example = "0")
@RequestParam(defaultValue = "0") int pageIndex,
@Parameter(description = "Number of list pagination", example =
"8") @RequestParam(required = false) Integer pageSize) {
- if (pageSize == null) {
- pageSize = Integer.MAX_VALUE;
- }
- Specification<Collector> specification = (root, query,
criteriaBuilder) -> {
- Predicate predicate = criteriaBuilder.conjunction();
- if (name != null && !name.isEmpty()) {
- Predicate predicateName =
criteriaBuilder.like(root.get("name"), "%" + name + "%");
- predicate = criteriaBuilder.and(predicateName);
- }
- return predicate;
- };
- PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
- Page<CollectorSummary> receivers =
collectorService.getCollectors(specification, pageRequest);
- Message<Page<CollectorSummary>> message = Message.success(receivers);
- return ResponseEntity.ok(message);
+ Page<CollectorSummary> receivers =
collectorService.getCollectors(name, pageIndex, pageSize);
+ return ResponseEntity.ok(Message.success(receivers));
}
@PutMapping("/online")
@@ -89,10 +65,7 @@ public class CollectorController {
public ResponseEntity<Message<Void>> onlineCollector(
@Parameter(description = "collector name", example =
"demo-collector")
@RequestParam(required = false) List<String> collectors) {
- if (collectors != null) {
- collectors.forEach(collector ->
-
this.manageServer.getCollectorAndJobScheduler().onlineCollector(collector));
- }
+ collectorService.makeCollectorsOnline(collectors);
return ResponseEntity.ok(Message.success("Online success"));
}
@@ -101,9 +74,7 @@ public class CollectorController {
public ResponseEntity<Message<Void>> offlineCollector(
@Parameter(description = "collector name", example =
"demo-collector")
@RequestParam(required = false) List<String> collectors) {
- if (collectors != null) {
- collectors.forEach(collector ->
this.manageServer.getCollectorAndJobScheduler().offlineCollector(collector));
- }
+ collectorService.makeCollectorsOffline(collectors);
return ResponseEntity.ok(Message.success("Offline success"));
}
@@ -121,14 +92,7 @@ public class CollectorController {
public ResponseEntity<Message<Map<String, String>>>
generateCollectorDeployInfo(
@Parameter(description = "collector name", example =
"demo-collector")
@PathVariable() String collector) {
- if (this.collectorService.hasCollector(collector)) {
- return ResponseEntity.ok(Message.fail(CommonConstants.FAIL_CODE,
"There already has same collector name."));
- }
- String host = IpDomainUtil.getLocalhostIp();
- Map<String, String> maps = new HashMap<>(6);
- maps.put("identity", collector);
- maps.put("host", host);
- return ResponseEntity.ok(Message.success(maps));
+ return
ResponseEntity.ok(Message.success(collectorService.generateCollectorDeployInfo(collector)));
}
}
diff --git
a/manager/src/main/java/org/apache/hertzbeat/manager/service/CollectorService.java
b/manager/src/main/java/org/apache/hertzbeat/manager/service/CollectorService.java
index 81d995af8..74a7ad3a1 100644
---
a/manager/src/main/java/org/apache/hertzbeat/manager/service/CollectorService.java
+++
b/manager/src/main/java/org/apache/hertzbeat/manager/service/CollectorService.java
@@ -18,11 +18,9 @@
package org.apache.hertzbeat.manager.service;
import java.util.List;
+import java.util.Map;
import org.apache.hertzbeat.common.entity.dto.CollectorSummary;
-import org.apache.hertzbeat.common.entity.manager.Collector;
import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.data.jpa.domain.Specification;
/**
* collector service
@@ -31,11 +29,13 @@ public interface CollectorService {
/**
* Dynamic conditional query
- * @param specification Query conditions
- * @param pageRequest pageIndex pageSize
+ * @param name Collector Name
+ * @param pageIndex current pageIndex
+ * @param pageSize Number of list pagination
+ *
* @return Search result
*/
- Page<CollectorSummary> getCollectors(Specification<Collector>
specification, PageRequest pageRequest);
+ Page<CollectorSummary> getCollectors(String name, int pageIndex, Integer
pageSize);
/**
* delete registered collectors
@@ -49,4 +49,23 @@ public interface CollectorService {
* @return return true if it has
*/
boolean hasCollector(String collector);
+
+ /**
+ * Generate Collector Deploy Info
+ * @param collector collector name
+ */
+ Map<String, String> generateCollectorDeployInfo(String collector);
+
+ /**
+ * Makes Collectors Offline
+ * @param collectors collector names
+ */
+ void makeCollectorsOffline(List<String> collectors);
+
+ /**
+ * Makes Collectors Online
+ * @param collectors collector names
+ */
+ void makeCollectorsOnline(List<String> collectors);
+
}
diff --git
a/manager/src/main/java/org/apache/hertzbeat/manager/service/impl/CollectorServiceImpl.java
b/manager/src/main/java/org/apache/hertzbeat/manager/service/impl/CollectorServiceImpl.java
index 003c5f99e..519cec7d5 100644
---
a/manager/src/main/java/org/apache/hertzbeat/manager/service/impl/CollectorServiceImpl.java
+++
b/manager/src/main/java/org/apache/hertzbeat/manager/service/impl/CollectorServiceImpl.java
@@ -17,12 +17,16 @@
package org.apache.hertzbeat.manager.service.impl;
+import jakarta.persistence.criteria.Predicate;
+import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
import org.apache.hertzbeat.common.entity.dto.CollectorSummary;
import org.apache.hertzbeat.common.entity.manager.Collector;
import org.apache.hertzbeat.common.entity.manager.CollectorMonitorBind;
import org.apache.hertzbeat.common.support.exception.CommonException;
+import org.apache.hertzbeat.common.util.IpDomainUtil;
import org.apache.hertzbeat.manager.dao.CollectorDao;
import org.apache.hertzbeat.manager.dao.CollectorMonitorBindDao;
import org.apache.hertzbeat.manager.scheduler.AssignJobs;
@@ -58,7 +62,19 @@ public class CollectorServiceImpl implements
CollectorService {
@Override
@Transactional(readOnly = true)
- public Page<CollectorSummary> getCollectors(Specification<Collector>
specification, PageRequest pageRequest) {
+ public Page<CollectorSummary> getCollectors(String name, int pageIndex,
Integer pageSize) {
+ if (pageSize == null) {
+ pageSize = Integer.MAX_VALUE;
+ }
+ Specification<Collector> specification = (root, query,
criteriaBuilder) -> {
+ Predicate predicate = criteriaBuilder.conjunction();
+ if (name != null && !name.isEmpty()) {
+ Predicate predicateName =
criteriaBuilder.like(root.get("name"), "%" + name + "%");
+ predicate = criteriaBuilder.and(predicateName);
+ }
+ return predicate;
+ };
+ PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
Page<Collector> collectors = collectorDao.findAll(specification,
pageRequest);
List<CollectorSummary> collectorSummaryList = new LinkedList<>();
for (Collector collector : collectors.getContent()) {
@@ -97,4 +113,31 @@ public class CollectorServiceImpl implements
CollectorService {
public boolean hasCollector(String collector) {
return this.collectorDao.findCollectorByName(collector).isPresent();
}
+
+ @Override
+ public Map<String, String> generateCollectorDeployInfo(String collector) {
+ if (hasCollector(collector)) {
+ throw new CommonException("There already exists a collector with
same name.");
+ }
+ String host = IpDomainUtil.getLocalhostIp();
+ Map<String, String> maps = new HashMap<>(6);
+ maps.put("identity", collector);
+ maps.put("host", host);
+ return maps;
+ }
+
+ @Override
+ public void makeCollectorsOffline(List<String> collectors) {
+ if (collectors != null) {
+ collectors.forEach(collector ->
this.manageServer.getCollectorAndJobScheduler().offlineCollector(collector));
+ }
+ }
+
+ @Override
+ public void makeCollectorsOnline(List<String> collectors) {
+ if (collectors != null) {
+ collectors.forEach(collector ->
+
this.manageServer.getCollectorAndJobScheduler().onlineCollector(collector));
+ }
+ }
}
diff --git
a/manager/src/test/java/org/apache/hertzbeat/manager/service/CollectorServiceTest.java
b/manager/src/test/java/org/apache/hertzbeat/manager/service/CollectorServiceTest.java
index 8e011fe03..1277e769c 100644
---
a/manager/src/test/java/org/apache/hertzbeat/manager/service/CollectorServiceTest.java
+++
b/manager/src/test/java/org/apache/hertzbeat/manager/service/CollectorServiceTest.java
@@ -17,7 +17,6 @@
package org.apache.hertzbeat.manager.service;
-import org.apache.hertzbeat.common.entity.manager.Collector;
import org.apache.hertzbeat.manager.dao.CollectorDao;
import org.apache.hertzbeat.manager.dao.CollectorMonitorBindDao;
import org.apache.hertzbeat.manager.scheduler.ConsistentHash;
@@ -37,7 +36,8 @@ import java.util.ArrayList;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
-import static org.mockito.Mockito.mock;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
/**
@@ -65,9 +65,8 @@ public class CollectorServiceTest {
@Test
public void getCollectors() {
- Specification<Collector> specification = mock(Specification.class);
- when(collectorDao.findAll(specification, PageRequest.of(1,
1))).thenReturn(Page.empty());
- assertDoesNotThrow(() -> collectorService.getCollectors(specification,
PageRequest.of(1, 1)));
+ when(collectorDao.findAll(any(Specification.class),
eq(PageRequest.of(1, 1)))).thenReturn(Page.empty());
+ assertDoesNotThrow(() -> collectorService.getCollectors("test", 1, 1));
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]