Commit a91c16dd by Nepxion

增加图形化灰度发布功能

parent 9caf8be5
......@@ -43,7 +43,7 @@ public class ServiceController {
}
public static List<String> getVersions(InstanceEntity instance) {
String url = "http://" + instance.getHost() + ":" + instance.getPort() + "/version/view";
String url = getUrl(instance) + "/version/view";
String result = restTemplate.getForEntity(url, String.class).getBody();
......@@ -52,7 +52,7 @@ public class ServiceController {
}
public static List<String> getRules(InstanceEntity instance) {
String url = "http://" + instance.getHost() + ":" + instance.getPort() + "/config/view";
String url = getUrl(instance) + "/config/view";
String result = restTemplate.getForEntity(url, String.class).getBody();
......@@ -61,7 +61,7 @@ public class ServiceController {
}
public static RouterEntity routes(InstanceEntity instance, String routeServiceIds) {
String url = "http://" + instance.getHost() + ":" + instance.getPort() + "/router/routes";
String url = getUrl(instance) + "/router/routes";
String result = restTemplate.postForEntity(url, routeServiceIds, String.class).getBody();
......@@ -69,6 +69,50 @@ public class ServiceController {
});
}
public static List<ResultEntity> versionUpdate(String serviceId, String version) {
String url = getUrl() + "/console/version/update/" + serviceId;
String result = restTemplate.postForEntity(url, version, String.class).getBody();
return convert(result, new TypeReference<List<ResultEntity>>() {
});
}
public static String versionUpdate(InstanceEntity instance, String version) {
String url = getUrl(instance) + "/version/update";
String result = restTemplate.postForEntity(url, version, String.class).getBody();
if (!StringUtils.equals(result, "OK")) {
ServiceErrorHandler errorHandler = (ServiceErrorHandler) restTemplate.getErrorHandler();
result = errorHandler.getCause();
}
return result;
}
public static List<ResultEntity> versionClear(String serviceId) {
String url = getUrl() + "/console/version/clear/" + serviceId;
String result = restTemplate.postForEntity(url, null, String.class).getBody();
return convert(result, new TypeReference<List<ResultEntity>>() {
});
}
public static String versionClear(InstanceEntity instance) {
String url = getUrl(instance) + "/version/clear";
String result = restTemplate.postForEntity(url, null, String.class).getBody();
if (!StringUtils.equals(result, "OK")) {
ServiceErrorHandler errorHandler = (ServiceErrorHandler) restTemplate.getErrorHandler();
result = errorHandler.getCause();
}
return result;
}
public static List<ResultEntity> configUpdate(String serviceId, String config) {
String url = getUrl() + "/console/config/update-sync/" + serviceId;
......@@ -84,7 +128,7 @@ public class ServiceController {
}
public static String configUpdate(InstanceEntity instance, String config) {
String url = "http://" + instance.getHost() + ":" + instance.getPort() + "/config/update-sync";
String url = getUrl(instance) + "/config/update-sync";
// 解决中文乱码
HttpHeaders headers = new HttpHeaders();
......@@ -110,6 +154,19 @@ public class ServiceController {
});
}
public static String configClear(InstanceEntity instance) {
String url = getUrl(instance) + "/config/clear";
String result = restTemplate.postForEntity(url, null, String.class).getBody();
if (!StringUtils.equals(result, "OK")) {
ServiceErrorHandler errorHandler = (ServiceErrorHandler) restTemplate.getErrorHandler();
result = errorHandler.getCause();
}
return result;
}
private static String getUrl() {
String url = PropertiesContext.getProperties().getString("url");
if (!url.endsWith("/")) {
......@@ -119,6 +176,12 @@ public class ServiceController {
return url;
}
private static String getUrl(InstanceEntity instance) {
String url = "http://" + instance.getHost() + ":" + instance.getPort();
return url;
}
private static <T> T convert(String result, TypeReference<T> typeReference) {
try {
return JacksonSerializer.fromJson(result, typeReference);
......
......@@ -683,7 +683,7 @@ public class ServiceTopology extends AbstractTopology {
dynamicVersionTextField.setText("");
localVersionTextField.setText("");
updateVersionButton.setText("批量更新灰度版本");
clearVersionButton.setText("批量清除灰度规则");
clearVersionButton.setText("批量清除灰度版本");
dynamicRuleTextArea.setText("");
localRuleTextArea.setText("");
......@@ -706,7 +706,7 @@ public class ServiceTopology extends AbstractTopology {
dynamicVersionTextField.setText(instance.getDynamicVersion());
localVersionTextField.setText(instance.getVersion());
updateVersionButton.setText("更新灰度版本");
clearVersionButton.setText("清除灰度规则");
clearVersionButton.setText("清除灰度版本");
dynamicRuleTextArea.setText(instance.getDynamicRule());
localRuleTextArea.setText(instance.getRule());
......@@ -719,7 +719,29 @@ public class ServiceTopology extends AbstractTopology {
private static final long serialVersionUID = 1L;
public void execute(ActionEvent e) {
String dynamicVersion = dynamicVersionTextField.getText();
if (StringUtils.isEmpty(dynamicVersion)) {
JBasicOptionPane.showMessageDialog(HandleManager.getFrame(ServiceTopology.this), "灰度版本不能为空", SwingLocale.getString("warning"), JBasicOptionPane.WARNING_MESSAGE);
return;
}
if (group != null) {
String serviceId = (String) group.getUserObject();
List<ResultEntity> results = ServiceController.versionUpdate(serviceId, dynamicVersion);
showResult(results);
refreshGrayState(group);
} else if (node != null) {
InstanceEntity instance = (InstanceEntity) node.getUserObject();
String result = ServiceController.versionUpdate(instance, dynamicVersion);
showResult(result);
refreshGrayState(node);
}
}
};
......@@ -727,11 +749,26 @@ public class ServiceTopology extends AbstractTopology {
}
private JSecurityAction createClearVersionAction() {
JSecurityAction action = new JSecurityAction("清除灰度规则", ConsoleIconFactory.getSwingIcon("paint.png"), "清除灰度规则") {
JSecurityAction action = new JSecurityAction("清除灰度版本", ConsoleIconFactory.getSwingIcon("paint.png"), "清除灰度版本") {
private static final long serialVersionUID = 1L;
public void execute(ActionEvent e) {
if (group != null) {
String serviceId = (String) group.getUserObject();
List<ResultEntity> results = ServiceController.versionClear(serviceId);
showResult(results);
refreshGrayState(group);
} else if (node != null) {
InstanceEntity instance = (InstanceEntity) node.getUserObject();
String result = ServiceController.versionClear(instance);
showResult(result);
refreshGrayState(node);
}
}
};
......@@ -745,7 +782,7 @@ public class ServiceTopology extends AbstractTopology {
public void execute(ActionEvent e) {
String dynamicRule = dynamicRuleTextArea.getText();
if (StringUtils.isEmpty(dynamicRule)) {
JBasicOptionPane.showMessageDialog(HandleManager.getFrame(ServiceTopology.this), "规则不能为空", SwingLocale.getString("warning"), JBasicOptionPane.WARNING_MESSAGE);
JBasicOptionPane.showMessageDialog(HandleManager.getFrame(ServiceTopology.this), "灰度规则不能为空", SwingLocale.getString("warning"), JBasicOptionPane.WARNING_MESSAGE);
return;
}
......@@ -766,7 +803,6 @@ public class ServiceTopology extends AbstractTopology {
refreshGrayState(node);
}
}
};
......@@ -788,6 +824,10 @@ public class ServiceTopology extends AbstractTopology {
} else if (node != null) {
InstanceEntity instance = (InstanceEntity) node.getUserObject();
String result = ServiceController.configClear(instance);
showResult(result);
refreshGrayState(node);
}
}
......
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