You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tubemq.apache.org by yu...@apache.org on 2021/01/27 06:10:54 UTC
[incubator-tubemq] branch TUBEMQ-421 updated: [TUBEMQ-531] delete
cluster (#407)
This is an automated email from the ASF dual-hosted git repository.
yuanbo pushed a commit to branch TUBEMQ-421
in repository https://gitbox.apache.org/repos/asf/incubator-tubemq.git
The following commit(s) were added to refs/heads/TUBEMQ-421 by this push:
new 3acac1a [TUBEMQ-531] delete cluster (#407)
3acac1a is described below
commit 3acac1a6addb8a643f5875ffa4107084ae824472
Author: EMsnap <zp...@connect.ust.hk>
AuthorDate: Wed Jan 27 14:10:43 2021 +0800
[TUBEMQ-531] delete cluster (#407)
* [TUBEMQ-531] delete cluster
* [TUBEMQ-536] add license
---
.../controller/cluster/ClusterController.java | 50 +++++++++++++++++++---
.../cluster/request/DeleteClusterReq.java} | 18 +++-----
.../manager/repository/ClusterRepository.java | 7 +++
.../tubemq/manager/service/ClusterServiceImpl.java | 12 ++++++
.../tubemq/manager/service/TubeMQHttpConst.java | 1 +
.../manager/service/interfaces/ClusterService.java | 6 +++
6 files changed, 75 insertions(+), 19 deletions(-)
diff --git a/tubemq-manager/src/main/java/org/apache/tubemq/manager/controller/cluster/ClusterController.java b/tubemq-manager/src/main/java/org/apache/tubemq/manager/controller/cluster/ClusterController.java
index d2fcc7a..a350913 100644
--- a/tubemq-manager/src/main/java/org/apache/tubemq/manager/controller/cluster/ClusterController.java
+++ b/tubemq-manager/src/main/java/org/apache/tubemq/manager/controller/cluster/ClusterController.java
@@ -18,6 +18,10 @@
package org.apache.tubemq.manager.controller.cluster;
import static org.apache.tubemq.manager.service.MasterServiceImpl.TUBE_REQUEST_PATH;
+import static org.apache.tubemq.manager.service.TubeMQHttpConst.ADD;
+import static org.apache.tubemq.manager.service.TubeMQHttpConst.DELETE;
+import static org.apache.tubemq.manager.service.TubeMQHttpConst.REBALANCE_CONSUMER;
+import static org.apache.tubemq.manager.service.TubeMQHttpConst.REBALANCE_CONSUMER_GROUP;
import static org.apache.tubemq.manager.service.TubeMQHttpConst.SCHEMA;
import static org.apache.tubemq.manager.service.TubeMQHttpConst.SUCCESS_CODE;
import static org.apache.tubemq.manager.utils.ConvertUtils.covertMapToQueryString;
@@ -28,12 +32,18 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.tubemq.manager.controller.TubeMQResult;
import org.apache.tubemq.manager.controller.cluster.request.AddClusterReq;
+import org.apache.tubemq.manager.controller.cluster.request.DeleteClusterReq;
+import org.apache.tubemq.manager.controller.topic.request.BatchAddGroupAuthReq;
+import org.apache.tubemq.manager.controller.topic.request.DeleteGroupReq;
+import org.apache.tubemq.manager.controller.topic.request.RebalanceConsumerReq;
+import org.apache.tubemq.manager.controller.topic.request.RebalanceGroupReq;
import org.apache.tubemq.manager.entry.NodeEntry;
import org.apache.tubemq.manager.repository.NodeRepository;
import org.apache.tubemq.manager.service.interfaces.ClusterService;
import org.apache.tubemq.manager.service.interfaces.MasterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@@ -57,14 +67,24 @@ public class ClusterController {
@Autowired
private MasterService masterService;
+
+ @PostMapping("")
+ public @ResponseBody TubeMQResult clusterMethodProxy(
+ @RequestParam String method, @RequestBody String req) throws Exception {
+ switch (method) {
+ case ADD:
+ return addNewCluster(gson.fromJson(req, AddClusterReq.class));
+ case DELETE:
+ return deleteCluster(gson.fromJson(req, DeleteClusterReq.class));
+ default:
+ return TubeMQResult.getErrorResult("no such method");
+ }
+ }
+
/**
* add a new cluster, should provide a master node
*/
- @RequestMapping(value = "", method = RequestMethod.POST,
- produces = MediaType.APPLICATION_JSON_VALUE)
- public @ResponseBody TubeMQResult addNewCluster(
- @RequestBody AddClusterReq req) {
-
+ public TubeMQResult addNewCluster(AddClusterReq req) {
// 1. validate params
if (req.getMasterIp() == null || req.getMasterWebPort() == null) {
return TubeMQResult.getErrorResult("please input master ip and webPort");
@@ -73,17 +93,33 @@ public class ClusterController {
if (checkResult.getErrCode() != SUCCESS_CODE) {
return TubeMQResult.getErrorResult("please check master ip and webPort");
}
-
// 2. add cluster and master node
Boolean addSuccess = clusterService.addClusterAndMasterNode(req);
-
if (!addSuccess) {
return TubeMQResult.getErrorResult("add cluster and master fail");
}
+ return new TubeMQResult();
+ }
+
+
+ /**
+ * delete a new cluster
+ */
+ public TubeMQResult deleteCluster(DeleteClusterReq req) {
+ // 1. validate params
+ if (req.getClusterId() == null || StringUtils.isEmpty(req.getModifyUser())) {
+ return TubeMQResult.getErrorResult("please input clusterId and modifyUser");
+ }
+ // 2. delete cluster
+ clusterService.deleteCluster(req.getClusterId());
return new TubeMQResult();
}
+
+
+
+
/**
* query cluster info
*/
diff --git a/tubemq-manager/src/main/java/org/apache/tubemq/manager/service/interfaces/ClusterService.java b/tubemq-manager/src/main/java/org/apache/tubemq/manager/controller/cluster/request/DeleteClusterReq.java
similarity index 67%
copy from tubemq-manager/src/main/java/org/apache/tubemq/manager/service/interfaces/ClusterService.java
copy to tubemq-manager/src/main/java/org/apache/tubemq/manager/controller/cluster/request/DeleteClusterReq.java
index 8bc1abd..d0a2c48 100644
--- a/tubemq-manager/src/main/java/org/apache/tubemq/manager/service/interfaces/ClusterService.java
+++ b/tubemq-manager/src/main/java/org/apache/tubemq/manager/controller/cluster/request/DeleteClusterReq.java
@@ -15,19 +15,13 @@
* limitations under the License.
*/
-package org.apache.tubemq.manager.service.interfaces;
+package org.apache.tubemq.manager.controller.cluster.request;
-import org.apache.tubemq.manager.controller.cluster.request.AddClusterReq;
-import org.springframework.stereotype.Component;
+import lombok.Data;
-@Component
-public interface ClusterService {
-
- /**
- * add cluster and the master node in the cluster
- * @param req
- * @return
- */
- Boolean addClusterAndMasterNode(AddClusterReq req);
+@Data
+public class DeleteClusterReq {
+ private Integer clusterId;
+ private String modifyUser;
}
diff --git a/tubemq-manager/src/main/java/org/apache/tubemq/manager/repository/ClusterRepository.java b/tubemq-manager/src/main/java/org/apache/tubemq/manager/repository/ClusterRepository.java
index 6959052..25b67d7 100644
--- a/tubemq-manager/src/main/java/org/apache/tubemq/manager/repository/ClusterRepository.java
+++ b/tubemq-manager/src/main/java/org/apache/tubemq/manager/repository/ClusterRepository.java
@@ -30,4 +30,11 @@ public interface ClusterRepository extends JpaRepository<ClusterEntry, Long> {
* @return
*/
ClusterEntry findClusterEntryByClusterId(Integer clusterId);
+
+ /**
+ * delete cluster by cluster id
+ * @param clusterId
+ * @return
+ */
+ Integer deleteByClusterId(Integer clusterId);
}
diff --git a/tubemq-manager/src/main/java/org/apache/tubemq/manager/service/ClusterServiceImpl.java b/tubemq-manager/src/main/java/org/apache/tubemq/manager/service/ClusterServiceImpl.java
index a16aea2..69c6341 100644
--- a/tubemq-manager/src/main/java/org/apache/tubemq/manager/service/ClusterServiceImpl.java
+++ b/tubemq-manager/src/main/java/org/apache/tubemq/manager/service/ClusterServiceImpl.java
@@ -18,7 +18,10 @@
package org.apache.tubemq.manager.service;
+import static org.apache.tubemq.manager.service.TubeMQHttpConst.DELETE_FAIL;
+
import java.util.Date;
+import javax.transaction.Transactional;
import lombok.extern.slf4j.Slf4j;
import org.apache.tubemq.manager.controller.cluster.request.AddClusterReq;
import org.apache.tubemq.manager.entry.ClusterEntry;
@@ -57,6 +60,15 @@ public class ClusterServiceImpl implements ClusterService {
return addMasterNode(req, retEntry);
}
+ @Override
+ @Transactional(rollbackOn = Exception.class)
+ public void deleteCluster(Integer clusterId) {
+ Integer successCode = clusterRepository.deleteByClusterId(clusterId);
+ if (successCode.equals(DELETE_FAIL) ) {
+ throw new RuntimeException("no such cluster with clusterId = " + clusterId);
+ }
+ }
+
private boolean addMasterNode(AddClusterReq req, ClusterEntry clusterEntry) {
if (clusterEntry == null) {
return false;
diff --git a/tubemq-manager/src/main/java/org/apache/tubemq/manager/service/TubeMQHttpConst.java b/tubemq-manager/src/main/java/org/apache/tubemq/manager/service/TubeMQHttpConst.java
index 9939dac..68d7f22 100644
--- a/tubemq-manager/src/main/java/org/apache/tubemq/manager/service/TubeMQHttpConst.java
+++ b/tubemq-manager/src/main/java/org/apache/tubemq/manager/service/TubeMQHttpConst.java
@@ -52,5 +52,6 @@ public class TubeMQHttpConst {
public static final String REBALANCE_CONSUMER = "rebalanceConsumer";
public static final String NO_SUCH_CLUSTER = "no such cluster";
public static final Integer SUCCESS_CODE = 0;
+ public static final Integer DELETE_FAIL = 0;
public static final String QUERY = "query";
}
diff --git a/tubemq-manager/src/main/java/org/apache/tubemq/manager/service/interfaces/ClusterService.java b/tubemq-manager/src/main/java/org/apache/tubemq/manager/service/interfaces/ClusterService.java
index 8bc1abd..aa513ce 100644
--- a/tubemq-manager/src/main/java/org/apache/tubemq/manager/service/interfaces/ClusterService.java
+++ b/tubemq-manager/src/main/java/org/apache/tubemq/manager/service/interfaces/ClusterService.java
@@ -30,4 +30,10 @@ public interface ClusterService {
* @return
*/
Boolean addClusterAndMasterNode(AddClusterReq req);
+
+ /**
+ * delete cluster by id
+ * @param clusterId
+ */
+ void deleteCluster(Integer clusterId);
}