This is an automated email from the ASF dual-hosted git repository.
gosonzhang pushed a commit to branch TUBEMQ-336
in repository https://gitbox.apache.org/repos/asf/incubator-tubemq.git
The following commit(s) were added to refs/heads/TUBEMQ-336 by this push:
new 4cf9e9a [TUBEMQ-402] add modify rest api for clusters (#308)
4cf9e9a is described below
commit 4cf9e9aabe544dcef787e02e5511a7aea044883d
Author: Yuanbo Liu <[email protected]>
AuthorDate: Thu Nov 5 19:38:01 2020 +0800
[TUBEMQ-402] add modify rest api for clusters (#308)
---
.../controller/cluster/ClusterController.java | 28 ++++++++++++++++++
.../manager/controller/TestClusterController.java | 33 ++++++++++++++++++++--
2 files changed, 59 insertions(+), 2 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 599ce15..58fe8f9 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
@@ -37,6 +37,7 @@ import org.apache.tubemq.manager.entry.NodeEntry;
import org.apache.tubemq.manager.repository.NodeRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
@@ -96,5 +97,32 @@ public class ClusterController {
return queryMaster(url);
}
+ /**
+ * modify cluster info, need to check token and
+ * make sure user has authorization to modify it.
+ */
+ @RequestMapping(value = "/modify", method = RequestMethod.POST,
+ produces = MediaType.APPLICATION_JSON_VALUE)
+ public @ResponseBody String modifyClusterInfo(
+ @RequestBody Map<String, String> requestBody) throws Exception {
+ String token = requestBody.get("confModAuthToken");
+ log.info("token is {}, request body size is {}", token,
requestBody.keySet());
+ int clusterId = Integer.parseInt(requestBody.get("clusterId"));
+ if (StringUtils.isNotBlank(token)) {
+ requestBody.remove("clusterId");
+ NodeEntry nodeEntry =
nodeRepository.findNodeEntryByClusterIdIsAndMasterIsTrue(
+ clusterId);
+ String url = SCHEMA + nodeEntry.getIp() + ":" +
nodeEntry.getWebPort()
+ + "/" + TUBE_REQUEST_PATH + "?" +
covertMapToQueryString(requestBody);
+ return queryMaster(url);
+ } else {
+ TubeResult result = new TubeResult();
+ result.setErrCode(-1);
+ result.setResult(false);
+ result.setErrMsg("token is not correct");
+ return gson.toJson(result);
+ }
+ }
+
}
diff --git
a/tubemq-manager/src/test/java/org/apache/tubemq/manager/controller/TestClusterController.java
b/tubemq-manager/src/test/java/org/apache/tubemq/manager/controller/TestClusterController.java
index c31fb8d..efd1cb1 100644
---
a/tubemq-manager/src/test/java/org/apache/tubemq/manager/controller/TestClusterController.java
+++
b/tubemq-manager/src/test/java/org/apache/tubemq/manager/controller/TestClusterController.java
@@ -20,6 +20,7 @@ package org.apache.tubemq.manager.controller;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;
import static
org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static
org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
@@ -34,6 +35,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
@@ -59,7 +61,7 @@ public class TestClusterController {
private NodeEntry getNodeEntry() {
NodeEntry nodeEntry = new NodeEntry();
nodeEntry.setMaster(true);
- nodeEntry.setIp("10.215.128.83");
+ nodeEntry.setIp("127.0.0.1");
nodeEntry.setWebPort(8080);
return nodeEntry;
}
@@ -117,5 +119,32 @@ public class TestClusterController {
result.getResponse().getContentType());
}
-
+ @Test
+ public void testTopicAdd() throws Exception {
+ String jsonStr = "{\n"
+ + " \"type\": \"op_modify\",\n"
+ + " \"method\": \"admin_add_new_topic_record\",\n"
+ + " \"confModAuthToken\": \"test\",\n"
+ + " \"clusterId\": 1,\n"
+ + " \"createUser\": \"webapi\",\n"
+ + " \"topicName\": \"test\",\n"
+ + " \"deleteWhen\": \"0 0 0 0 0\",\n"
+ + " \"unflushThreshold\": 1000,\n"
+ + " \"acceptPublish\": true,\n"
+ + " \"numPartitions\": 3,\n"
+ + " \"deletePolicy\": \"\",\n"
+ + " \"unflushInterval\": 1000,\n"
+ + " \"acceptSubscribe\": true,\n"
+ + " \"brokerId\": 12323\n"
+ + "}\n";
+ NodeEntry nodeEntry = getNodeEntry();
+
when(nodeRepository.findNodeEntryByClusterIdIsAndMasterIsTrue(any(Integer.class)))
+ .thenReturn(nodeEntry);
+ RequestBuilder request = post("/v1/cluster/modify")
+ .contentType(MediaType.APPLICATION_JSON).content(jsonStr);
+ MvcResult result = mockMvc.perform(request).andReturn();
+ String resultStr = result.getResponse().getContentAsString();
+ log.info("result json string is {}, response type is {}", resultStr,
+ result.getResponse().getContentType());
+ }
}