mirror of
https://github.com/alibaba/canal.git
synced 2026-11-04 00:30:15 +08:00
fixed canal-admin
This commit is contained in:
@@ -11,7 +11,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.alibaba.otter.canal.admin.model.BaseModel;
|
||||
import com.alibaba.otter.canal.admin.model.CanalCluster;
|
||||
import com.alibaba.otter.canal.admin.model.NodeServer;
|
||||
import com.alibaba.otter.canal.admin.service.CanalClusterServic;
|
||||
import com.alibaba.otter.canal.admin.service.CanalClusterService;
|
||||
import com.alibaba.otter.canal.admin.service.NodeServerService;
|
||||
|
||||
@RestController
|
||||
@@ -19,7 +19,7 @@ import com.alibaba.otter.canal.admin.service.NodeServerService;
|
||||
public class CanalClusterController {
|
||||
|
||||
@Autowired
|
||||
CanalClusterServic canalClusterServic;
|
||||
CanalClusterService canalClusterServic;
|
||||
|
||||
@Autowired
|
||||
NodeServerService nodeServerService;
|
||||
|
||||
@@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
import com.alibaba.otter.canal.admin.model.BaseModel;
|
||||
import com.alibaba.otter.canal.admin.model.CanalConfig;
|
||||
import com.alibaba.otter.canal.admin.model.CanalInstanceConfig;
|
||||
import com.alibaba.otter.canal.admin.service.PollingConfigServer;
|
||||
import com.alibaba.otter.canal.admin.service.PollingConfigService;
|
||||
import com.alibaba.otter.canal.protocol.SecurityUtil;
|
||||
|
||||
/**
|
||||
@@ -37,7 +37,7 @@ public class PollingConfigController {
|
||||
String passwd;
|
||||
|
||||
@Autowired
|
||||
PollingConfigServer pollingConfigServer;
|
||||
PollingConfigService pollingConfigService;
|
||||
|
||||
/**
|
||||
* 获取server全局配置
|
||||
@@ -45,16 +45,18 @@ public class PollingConfigController {
|
||||
@GetMapping(value = "/server_polling")
|
||||
public BaseModel<CanalConfig> canalConfigPoll(@RequestHeader String user, @RequestHeader String passwd,
|
||||
@RequestParam String ip, @RequestParam Integer port,
|
||||
@RequestParam String md5, @PathVariable boolean register,
|
||||
@PathVariable String cluster, @PathVariable String env) {
|
||||
@RequestParam String md5, @RequestParam boolean register,
|
||||
@RequestParam String cluster, @PathVariable String env) {
|
||||
if (!auth(user, passwd)) {
|
||||
throw new RuntimeException("auth :" + user + " is failed");
|
||||
}
|
||||
|
||||
if (register) {
|
||||
if (StringUtils.isEmpty(md5) && register) {
|
||||
// do something
|
||||
pollingConfigService.autoRegister(ip, port, cluster);
|
||||
}
|
||||
CanalConfig canalConfig = pollingConfigServer.getChangedConfig(ip, port, md5);
|
||||
|
||||
CanalConfig canalConfig = pollingConfigService.getChangedConfig(ip, port, md5);
|
||||
return BaseModel.getInstance(canalConfig);
|
||||
}
|
||||
|
||||
@@ -69,7 +71,7 @@ public class PollingConfigController {
|
||||
throw new RuntimeException("auth :" + user + " is failed");
|
||||
}
|
||||
|
||||
CanalInstanceConfig canalInstanceConfig = pollingConfigServer.getInstanceConfig(destination, md5);
|
||||
CanalInstanceConfig canalInstanceConfig = pollingConfigService.getInstanceConfig(destination, md5);
|
||||
return BaseModel.getInstance(canalInstanceConfig);
|
||||
}
|
||||
|
||||
@@ -84,7 +86,7 @@ public class PollingConfigController {
|
||||
throw new RuntimeException("auth :" + user + " is failed");
|
||||
}
|
||||
|
||||
CanalInstanceConfig canalInstanceConfig = pollingConfigServer.getInstancesConfig(ip, port, md5);
|
||||
CanalInstanceConfig canalInstanceConfig = pollingConfigService.getInstancesConfig(ip, port, md5);
|
||||
return BaseModel.getInstance(canalInstanceConfig);
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import java.util.List;
|
||||
|
||||
import com.alibaba.otter.canal.admin.model.CanalCluster;
|
||||
|
||||
public interface CanalClusterServic {
|
||||
public interface CanalClusterService {
|
||||
|
||||
void save(CanalCluster canalCluster);
|
||||
|
||||
@@ -3,7 +3,9 @@ package com.alibaba.otter.canal.admin.service;
|
||||
import com.alibaba.otter.canal.admin.model.CanalConfig;
|
||||
import com.alibaba.otter.canal.admin.model.CanalInstanceConfig;
|
||||
|
||||
public interface PollingConfigServer {
|
||||
public interface PollingConfigService {
|
||||
|
||||
public boolean autoRegister(String ip, Integer adminPort, String cluster);
|
||||
|
||||
CanalConfig getChangedConfig(String ip, Integer port, String md5);
|
||||
|
||||
@@ -10,10 +10,10 @@ import com.alibaba.otter.canal.admin.common.exception.ServiceException;
|
||||
import com.alibaba.otter.canal.admin.model.CanalCluster;
|
||||
import com.alibaba.otter.canal.admin.model.CanalInstanceConfig;
|
||||
import com.alibaba.otter.canal.admin.model.NodeServer;
|
||||
import com.alibaba.otter.canal.admin.service.CanalClusterServic;
|
||||
import com.alibaba.otter.canal.admin.service.CanalClusterService;
|
||||
|
||||
@Service
|
||||
public class CanalClusterServiceImpl implements CanalClusterServic {
|
||||
public class CanalClusterServiceImpl implements CanalClusterService {
|
||||
|
||||
public void save(CanalCluster canalCluster) {
|
||||
canalCluster.save();
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.alibaba.otter.canal.admin.service.impl;
|
||||
|
||||
import io.ebean.Query;
|
||||
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -23,8 +25,6 @@ import com.alibaba.otter.canal.admin.model.Pager;
|
||||
import com.alibaba.otter.canal.admin.service.NodeServerService;
|
||||
import com.alibaba.otter.canal.protocol.SecurityUtil;
|
||||
|
||||
import io.ebean.Query;
|
||||
|
||||
/**
|
||||
* 节点信息业务层
|
||||
*
|
||||
@@ -55,7 +55,6 @@ public class NodeServerServiceImpl implements NodeServerService {
|
||||
String contentMd5 = SecurityUtil.md5String(canalConfig.getContent());
|
||||
canalConfig.setContentMd5(contentMd5);
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
canalConfig.save();
|
||||
}
|
||||
@@ -176,8 +175,9 @@ public class NodeServerServiceImpl implements NodeServerService {
|
||||
if (nodeServer == null) {
|
||||
return "";
|
||||
}
|
||||
return SimpleAdminConnectors
|
||||
.execute(nodeServer.getIp(), nodeServer.getAdminPort(), adminConnector -> adminConnector.canalLog(100));
|
||||
return SimpleAdminConnectors.execute(nodeServer.getIp(),
|
||||
nodeServer.getAdminPort(),
|
||||
adminConnector -> adminConnector.canalLog(100));
|
||||
}
|
||||
|
||||
public boolean remoteOperation(Long id, String option) {
|
||||
@@ -187,8 +187,7 @@ public class NodeServerServiceImpl implements NodeServerService {
|
||||
}
|
||||
Boolean result = null;
|
||||
if ("start".equals(option)) {
|
||||
result = SimpleAdminConnectors
|
||||
.execute(nodeServer.getIp(), nodeServer.getAdminPort(), AdminConnector::start);
|
||||
result = SimpleAdminConnectors.execute(nodeServer.getIp(), nodeServer.getAdminPort(), AdminConnector::start);
|
||||
} else if ("stop".equals(option)) {
|
||||
result = SimpleAdminConnectors.execute(nodeServer.getIp(), nodeServer.getAdminPort(), AdminConnector::stop);
|
||||
} else {
|
||||
|
||||
@@ -5,18 +5,51 @@ import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.alibaba.otter.canal.admin.common.exception.ServiceException;
|
||||
import com.alibaba.otter.canal.admin.model.CanalCluster;
|
||||
import com.alibaba.otter.canal.admin.model.CanalConfig;
|
||||
import com.alibaba.otter.canal.admin.model.CanalInstanceConfig;
|
||||
import com.alibaba.otter.canal.admin.model.NodeServer;
|
||||
import com.alibaba.otter.canal.admin.service.PollingConfigServer;
|
||||
import com.alibaba.otter.canal.admin.service.CanalClusterService;
|
||||
import com.alibaba.otter.canal.admin.service.NodeServerService;
|
||||
import com.alibaba.otter.canal.admin.service.PollingConfigService;
|
||||
import com.alibaba.otter.canal.protocol.SecurityUtil;
|
||||
import com.google.common.base.Joiner;
|
||||
|
||||
@Service
|
||||
public class PollingConfigServiceImpl implements PollingConfigServer {
|
||||
public class PollingConfigServiceImpl implements PollingConfigService {
|
||||
|
||||
@Autowired
|
||||
NodeServerService nodeServerService;
|
||||
|
||||
@Autowired
|
||||
CanalClusterService canalClusterService;
|
||||
|
||||
public boolean autoRegister(String ip, Integer adminPort, String cluster) {
|
||||
NodeServer server = NodeServer.find.query().where().eq("ip", ip).eq("adminPort", adminPort).findOne();
|
||||
if (server == null) {
|
||||
server = new NodeServer();
|
||||
server.setName(ip);
|
||||
server.setIp(ip);
|
||||
server.setAdminPort(adminPort);
|
||||
server.setTcpPort(adminPort + 1);
|
||||
server.setMetricPort(adminPort + 2);
|
||||
if (StringUtils.isNotEmpty(cluster)) {
|
||||
CanalCluster clusterConfig = CanalCluster.find.query().where().eq("name", cluster).findOne();
|
||||
if (clusterConfig == null) {
|
||||
throw new ServiceException("auto cluster : " + cluster + " is not found.");
|
||||
}
|
||||
|
||||
server.setClusterId(clusterConfig.getId());
|
||||
}
|
||||
nodeServerService.save(server);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public CanalConfig getChangedConfig(String ip, Integer port, String md5) {
|
||||
NodeServer server = NodeServer.find.query().where().eq("ip", ip).eq("adminPort", port).findOne();
|
||||
|
||||
Reference in New Issue
Block a user