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);
 }