Commit 1f6a0fa9 by Nepxion

增加批量设置版本和清除版本

parent 3fea6475
...@@ -89,7 +89,7 @@ public class ConsoleEndpoint implements MvcEndpoint { ...@@ -89,7 +89,7 @@ public class ConsoleEndpoint implements MvcEndpoint {
@ResponseBody @ResponseBody
@ManagedOperation @ManagedOperation
public ResponseEntity<?> configSendAsync(@PathVariable(value = "serviceId") @ApiParam(value = "服务名", required = true) String serviceId, @RequestBody @ApiParam(value = "规则配置内容,XML格式", required = true) String config) { public ResponseEntity<?> configSendAsync(@PathVariable(value = "serviceId") @ApiParam(value = "服务名", required = true) String serviceId, @RequestBody @ApiParam(value = "规则配置内容,XML格式", required = true) String config) {
return send(serviceId, config, true); return executeConfigSend(serviceId, config, true);
} }
@RequestMapping(path = "/console/config/send-sync/{serviceId}", method = RequestMethod.POST) @RequestMapping(path = "/console/config/send-sync/{serviceId}", method = RequestMethod.POST)
...@@ -97,7 +97,23 @@ public class ConsoleEndpoint implements MvcEndpoint { ...@@ -97,7 +97,23 @@ public class ConsoleEndpoint implements MvcEndpoint {
@ResponseBody @ResponseBody
@ManagedOperation @ManagedOperation
public ResponseEntity<?> configSendSync(@PathVariable(value = "serviceId") @ApiParam(value = "服务名", required = true) String serviceId, @RequestBody @ApiParam(value = "规则配置内容,XML格式", required = true) String config) { public ResponseEntity<?> configSendSync(@PathVariable(value = "serviceId") @ApiParam(value = "服务名", required = true) String serviceId, @RequestBody @ApiParam(value = "规则配置内容,XML格式", required = true) String config) {
return send(serviceId, config, false); return executeConfigSend(serviceId, config, false);
}
@RequestMapping(path = "/version/send/{serviceId}", method = RequestMethod.POST)
@ApiOperation(value = "批量设置服务的动态版本", notes = "", response = ResponseEntity.class, httpMethod = "POST")
@ResponseBody
@ManagedOperation
public ResponseEntity<?> versionSend(@PathVariable(value = "serviceId") @ApiParam(value = "服务名", required = true) String serviceId, @RequestBody @ApiParam(value = "版本号", required = true) String version) {
return executeVersionSend(serviceId, version);
}
@RequestMapping(path = "/version/clear/{serviceId}", method = RequestMethod.GET)
@ApiOperation(value = "批量清除服务的动态版本", notes = "", response = ResponseEntity.class, httpMethod = "GET")
@ResponseBody
@ManagedOperation
public ResponseEntity<?> versionClear(@PathVariable(value = "serviceId") @ApiParam(value = "服务名", required = true) String serviceId) {
return executeVersionClear(serviceId);
} }
public List<String> getServices() { public List<String> getServices() {
...@@ -140,7 +156,7 @@ public class ConsoleEndpoint implements MvcEndpoint { ...@@ -140,7 +156,7 @@ public class ConsoleEndpoint implements MvcEndpoint {
return serviceMap; return serviceMap;
} }
private ResponseEntity<?> send(String serviceId, String config, boolean async) { private ResponseEntity<?> executeConfigSend(String serviceId, String config, boolean async) {
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
List<ServiceInstance> serviceInstances = getInstances(serviceId); List<ServiceInstance> serviceInstances = getInstances(serviceId);
...@@ -151,7 +167,6 @@ public class ConsoleEndpoint implements MvcEndpoint { ...@@ -151,7 +167,6 @@ public class ConsoleEndpoint implements MvcEndpoint {
String url = "http://" + host + ":" + port + "/config/send-" + (async ? "async" : "sync"); String url = "http://" + host + ":" + port + "/config/send-" + (async ? "async" : "sync");
String result = consoleRestTemplate.postForEntity(url, config, String.class).getBody(); String result = consoleRestTemplate.postForEntity(url, config, String.class).getBody();
// 这里最好考虑分布式事务
if (!StringUtils.equals(result, "OK")) { if (!StringUtils.equals(result, "OK")) {
ConsoleErrorHandler errorHandler = (ConsoleErrorHandler) consoleRestTemplate.getErrorHandler(); ConsoleErrorHandler errorHandler = (ConsoleErrorHandler) consoleRestTemplate.getErrorHandler();
result = errorHandler.getCause(); result = errorHandler.getCause();
...@@ -167,6 +182,58 @@ public class ConsoleEndpoint implements MvcEndpoint { ...@@ -167,6 +182,58 @@ public class ConsoleEndpoint implements MvcEndpoint {
return ResponseEntity.ok().body(result); return ResponseEntity.ok().body(result);
} }
private ResponseEntity<?> executeVersionSend(String serviceId, String version) {
StringBuilder stringBuilder = new StringBuilder();
List<ServiceInstance> serviceInstances = getInstances(serviceId);
for (ServiceInstance serviceInstance : serviceInstances) {
String host = serviceInstance.getHost();
int port = serviceInstance.getPort();
String url = "http://" + host + ":" + port + "/version/send";
String result = consoleRestTemplate.postForEntity(url, version, String.class).getBody();
if (!StringUtils.equals(result, "OK")) {
ConsoleErrorHandler errorHandler = (ConsoleErrorHandler) consoleRestTemplate.getErrorHandler();
result = errorHandler.getCause();
}
stringBuilder.append("Version sent, serviceId=").append(serviceId).append(", url=").append(url).append(", result=").append(result).append("\n");
}
String result = stringBuilder.toString();
result = result.substring(0, result.lastIndexOf("\n"));
LOG.info("\n{}", result);
return ResponseEntity.ok().body(result);
}
private ResponseEntity<?> executeVersionClear(String serviceId) {
StringBuilder stringBuilder = new StringBuilder();
List<ServiceInstance> serviceInstances = getInstances(serviceId);
for (ServiceInstance serviceInstance : serviceInstances) {
String host = serviceInstance.getHost();
int port = serviceInstance.getPort();
String url = "http://" + host + ":" + port + "/version/clear";
String result = consoleRestTemplate.getForEntity(url, String.class).getBody();
if (!StringUtils.equals(result, "OK")) {
ConsoleErrorHandler errorHandler = (ConsoleErrorHandler) consoleRestTemplate.getErrorHandler();
result = errorHandler.getCause();
}
stringBuilder.append("Version sent, serviceId=").append(serviceId).append(", url=").append(url).append(", result=").append(result).append("\n");
}
String result = stringBuilder.toString();
result = result.substring(0, result.lastIndexOf("\n"));
LOG.info("\n{}", result);
return ResponseEntity.ok().body(result);
}
@Override @Override
public String getPath() { public String getPath() {
return "/"; return "/";
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment