Commit 542f9afd by Nepxion

增加图形化灰度发布功能

parent ed244ec3
...@@ -29,6 +29,7 @@ import java.util.Set; ...@@ -29,6 +29,7 @@ import java.util.Set;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.Box; import javax.swing.Box;
import javax.swing.BoxLayout; import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultComboBoxModel;
import javax.swing.JLabel; import javax.swing.JLabel;
import javax.swing.JPanel; import javax.swing.JPanel;
...@@ -58,6 +59,7 @@ import com.nepxion.discovery.console.desktop.workspace.topology.TopologyEntityTy ...@@ -58,6 +59,7 @@ import com.nepxion.discovery.console.desktop.workspace.topology.TopologyEntityTy
import com.nepxion.swing.action.JSecurityAction; import com.nepxion.swing.action.JSecurityAction;
import com.nepxion.swing.button.ButtonManager; import com.nepxion.swing.button.ButtonManager;
import com.nepxion.swing.button.JClassicButton; import com.nepxion.swing.button.JClassicButton;
import com.nepxion.swing.button.JClassicMenuButton;
import com.nepxion.swing.combobox.JBasicComboBox; import com.nepxion.swing.combobox.JBasicComboBox;
import com.nepxion.swing.dialog.JExceptionDialog; import com.nepxion.swing.dialog.JExceptionDialog;
import com.nepxion.swing.dialog.JOptionDialog; import com.nepxion.swing.dialog.JOptionDialog;
...@@ -68,6 +70,7 @@ import com.nepxion.swing.layout.filed.FiledLayout; ...@@ -68,6 +70,7 @@ import com.nepxion.swing.layout.filed.FiledLayout;
import com.nepxion.swing.layout.table.TableLayout; import com.nepxion.swing.layout.table.TableLayout;
import com.nepxion.swing.locale.SwingLocale; import com.nepxion.swing.locale.SwingLocale;
import com.nepxion.swing.menuitem.JBasicMenuItem; import com.nepxion.swing.menuitem.JBasicMenuItem;
import com.nepxion.swing.menuitem.JBasicRadioButtonMenuItem;
import com.nepxion.swing.optionpane.JBasicOptionPane; import com.nepxion.swing.optionpane.JBasicOptionPane;
import com.nepxion.swing.popupmenu.JBasicPopupMenu; import com.nepxion.swing.popupmenu.JBasicPopupMenu;
import com.nepxion.swing.scrollpane.JBasicScrollPane; import com.nepxion.swing.scrollpane.JBasicScrollPane;
...@@ -138,6 +141,17 @@ public class ServiceTopology extends AbstractTopology { ...@@ -138,6 +141,17 @@ public class ServiceTopology extends AbstractTopology {
} }
private void initializeToolBar() { private void initializeToolBar() {
JBasicRadioButtonMenuItem ruleToConfigCenterRadioButtonMenuItem = new JBasicRadioButtonMenuItem(ConsoleLocale.getString("rule_control_mode_to_config_center"), ConsoleLocale.getString("rule_control_mode_to_config_center"), true);
JBasicRadioButtonMenuItem ruleToServiceRadioButtonMenuItem = new JBasicRadioButtonMenuItem(ConsoleLocale.getString("rule_control_mode_to_service"), ConsoleLocale.getString("rule_control_mode_to_service"));
ButtonGroup buttonGroup = new ButtonGroup();
buttonGroup.add(ruleToConfigCenterRadioButtonMenuItem);
buttonGroup.add(ruleToServiceRadioButtonMenuItem);
JBasicPopupMenu ruleControlPopupMenu = new JBasicPopupMenu();
ruleControlPopupMenu.add(ruleToConfigCenterRadioButtonMenuItem);
ruleControlPopupMenu.add(ruleToServiceRadioButtonMenuItem);
JClassicMenuButton ruleControllMenubutton = new JClassicMenuButton(ConsoleLocale.getString("rule_control_mode"), ConsoleIconFactory.getSwingIcon("component/advanced_16.png"), ConsoleLocale.getString("rule_control_mode"));
ruleControllMenubutton.setPopupMenu(ruleControlPopupMenu);
JToolBar toolBar = getGraph().getToolbar(); JToolBar toolBar = getGraph().getToolbar();
toolBar.addSeparator(); toolBar.addSeparator();
toolBar.add(Box.createHorizontalStrut(5)); toolBar.add(Box.createHorizontalStrut(5));
...@@ -146,6 +160,7 @@ public class ServiceTopology extends AbstractTopology { ...@@ -146,6 +160,7 @@ public class ServiceTopology extends AbstractTopology {
toolBar.add(new JClassicButton(createExecuteGrayReleaseAction())); toolBar.add(new JClassicButton(createExecuteGrayReleaseAction()));
toolBar.add(new JClassicButton(createExecuteGrayRouterAction())); toolBar.add(new JClassicButton(createExecuteGrayRouterAction()));
toolBar.add(new JClassicButton(createRefreshGrayStateAction())); toolBar.add(new JClassicButton(createRefreshGrayStateAction()));
toolBar.add(ruleControllMenubutton);
toolBar.addSeparator(); toolBar.addSeparator();
toolBar.add(createConfigButton(true)); toolBar.add(createConfigButton(true));
...@@ -679,7 +694,10 @@ public class ServiceTopology extends AbstractTopology { ...@@ -679,7 +694,10 @@ public class ServiceTopology extends AbstractTopology {
private JClassicButton clearVersionButton; private JClassicButton clearVersionButton;
private JBasicTextArea dynamicRuleTextArea; private JBasicTextArea dynamicRuleTextArea;
private JPanel dynamicRulePanel;
private JBasicTextArea localRuleTextArea; private JBasicTextArea localRuleTextArea;
private JPanel localRulePanel;
private JLabel ruleInfoLabel;
private JBasicTabbedPane ruleTabbedPane; private JBasicTabbedPane ruleTabbedPane;
private JClassicButton updateRuleButton; private JClassicButton updateRuleButton;
private JClassicButton clearRuleButton; private JClassicButton clearRuleButton;
...@@ -740,13 +758,21 @@ public class ServiceTopology extends AbstractTopology { ...@@ -740,13 +758,21 @@ public class ServiceTopology extends AbstractTopology {
private JPanel createRulePanel() { private JPanel createRulePanel() {
dynamicRuleTextArea = new JBasicTextArea(); dynamicRuleTextArea = new JBasicTextArea();
dynamicRulePanel = new JPanel();
dynamicRulePanel.setBorder(BorderFactory.createEmptyBorder(5, 0, 5, 0));
dynamicRulePanel.setLayout(new BorderLayout());
dynamicRulePanel.add(new JBasicScrollPane(dynamicRuleTextArea), BorderLayout.CENTER);
localRuleTextArea = new JBasicTextArea(); localRuleTextArea = new JBasicTextArea();
localRuleTextArea.setEditable(false); localRuleTextArea.setEditable(false);
localRulePanel = new JPanel();
localRulePanel.setBorder(BorderFactory.createEmptyBorder(5, 0, 5, 0));
localRulePanel.setLayout(new BorderLayout());
localRulePanel.add(new JBasicScrollPane(localRuleTextArea), BorderLayout.CENTER);
ruleTabbedPane = new JBasicTabbedPane(); ruleTabbedPane = new JBasicTabbedPane();
ruleTabbedPane.addTab(ConsoleLocale.getString("label_dynamic_rule"), new JBasicScrollPane(dynamicRuleTextArea), ConsoleLocale.getString("label_dynamic_rule")); ruleTabbedPane.addTab(ConsoleLocale.getString("label_dynamic_rule"), dynamicRulePanel, ConsoleLocale.getString("label_dynamic_rule"));
ruleTabbedPane.addTab(ConsoleLocale.getString("label_local_rule"), new JBasicScrollPane(localRuleTextArea), ConsoleLocale.getString("label_local_rule")); ruleTabbedPane.addTab(ConsoleLocale.getString("label_local_rule"), localRulePanel, ConsoleLocale.getString("label_local_rule"));
updateRuleButton = new JClassicButton(createUpdateRuleAction()); updateRuleButton = new JClassicButton(createUpdateRuleAction());
updateRuleButton.setPreferredSize(new Dimension(updateRuleButton.getPreferredSize().width, 30)); updateRuleButton.setPreferredSize(new Dimension(updateRuleButton.getPreferredSize().width, 30));
...@@ -760,11 +786,17 @@ public class ServiceTopology extends AbstractTopology { ...@@ -760,11 +786,17 @@ public class ServiceTopology extends AbstractTopology {
toolBar.add(clearRuleButton); toolBar.add(clearRuleButton);
ButtonManager.updateUI(toolBar); ButtonManager.updateUI(toolBar);
ruleInfoLabel = new JLabel(ConsoleLocale.getString("description_gray_rule_to_config_center"), IconFactory.getSwingIcon("question_message.png"), SwingConstants.LEADING);
JPanel layoutPanel = new JPanel();
layoutPanel.setLayout(new FiledLayout(FiledLayout.COLUMN, FiledLayout.FULL, 5));
layoutPanel.add(ruleInfoLabel);
layoutPanel.add(toolBar);
JPanel panel = new JPanel(); JPanel panel = new JPanel();
panel.setBorder(UIFactory.createTitledBorder(ConsoleLocale.getString("title_gray_rule_operation"))); panel.setBorder(UIFactory.createTitledBorder(ConsoleLocale.getString("title_gray_rule_operation")));
panel.setLayout(new BorderLayout()); panel.setLayout(new BorderLayout());
panel.add(ruleTabbedPane, BorderLayout.CENTER); panel.add(ruleTabbedPane, BorderLayout.CENTER);
panel.add(toolBar, BorderLayout.SOUTH); panel.add(layoutPanel, BorderLayout.SOUTH);
return panel; return panel;
} }
...@@ -791,10 +823,10 @@ public class ServiceTopology extends AbstractTopology { ...@@ -791,10 +823,10 @@ public class ServiceTopology extends AbstractTopology {
} }
if (versionTabbedPane.getTabCount() == 2) { if (versionTabbedPane.getTabCount() == 2) {
versionTabbedPane.remove(1); versionTabbedPane.remove(localVersionPanel);
} }
if (ruleTabbedPane.getTabCount() == 2) { if (ruleTabbedPane.getTabCount() == 2) {
ruleTabbedPane.remove(1); ruleTabbedPane.remove(localRulePanel);
} }
dynamicVersionTextField.setText(""); dynamicVersionTextField.setText("");
...@@ -824,7 +856,7 @@ public class ServiceTopology extends AbstractTopology { ...@@ -824,7 +856,7 @@ public class ServiceTopology extends AbstractTopology {
versionTabbedPane.addTab(ConsoleLocale.getString("label_local_version"), localVersionPanel, ConsoleLocale.getString("label_local_version")); versionTabbedPane.addTab(ConsoleLocale.getString("label_local_version"), localVersionPanel, ConsoleLocale.getString("label_local_version"));
} }
if (ruleTabbedPane.getTabCount() == 1) { if (ruleTabbedPane.getTabCount() == 1) {
ruleTabbedPane.addTab(ConsoleLocale.getString("label_local_rule"), new JBasicScrollPane(localRuleTextArea), ConsoleLocale.getString("label_local_rule")); ruleTabbedPane.addTab(ConsoleLocale.getString("label_local_rule"), localRulePanel, ConsoleLocale.getString("label_local_rule"));
} }
dynamicVersionTextField.setText(instance.getDynamicVersion()); dynamicVersionTextField.setText(instance.getDynamicVersion());
......
...@@ -177,10 +177,10 @@ public abstract class AbstractTopology extends JPanel { ...@@ -177,10 +177,10 @@ public abstract class AbstractTopology extends JPanel {
popupMenu.add(linkAutoHideRadioButtonMenuItem); popupMenu.add(linkAutoHideRadioButtonMenuItem);
} }
JClassicMenuButton button = new JClassicMenuButton(SwingLocale.getString("setting"), ConsoleIconFactory.getSwingIcon("property.png"), SwingLocale.getString("setting")); JClassicMenuButton menuButton = new JClassicMenuButton(SwingLocale.getString("setting"), ConsoleIconFactory.getSwingIcon("property.png"), SwingLocale.getString("setting"));
button.setPopupMenu(popupMenu); menuButton.setPopupMenu(popupMenu);
return button; return menuButton;
} }
private JSecurityAction createShowLayoutAction() { private JSecurityAction createShowLayoutAction() {
......
...@@ -9,6 +9,9 @@ show_topology=显示服务拓扑 ...@@ -9,6 +9,9 @@ show_topology=显示服务拓扑
execute_gray_release=执行灰度发布 execute_gray_release=执行灰度发布
execute_gray_router=执行灰度路由 execute_gray_router=执行灰度路由
refresh_gray_state=刷新灰度状态 refresh_gray_state=刷新灰度状态
rule_control_mode=规则推送模式
rule_control_mode_to_config_center=推送到远程配置中心
rule_control_mode_to_service=推送到服务
title_service_cluster_gray_release=服务集群灰度发布 title_service_cluster_gray_release=服务集群灰度发布
service_cluster_filter=服务集群过滤 service_cluster_filter=服务集群过滤
...@@ -34,6 +37,8 @@ button_batch_update_version=批量更新灰度版本 ...@@ -34,6 +37,8 @@ button_batch_update_version=批量更新灰度版本
button_batch_clear_version=批量清除灰度版本 button_batch_clear_version=批量清除灰度版本
button_update_rule=更新灰度规则 button_update_rule=更新灰度规则
button_clear_rule=清除灰度规则 button_clear_rule=清除灰度规则
description_gray_rule_to_config_center=灰度规则,输入的格式为XML。目前采用的推送模式是 [推送到远程配置中心],只支持批量服务推送,不支持单个服务推送
description_gray_rule_to_service=灰度规则,输入的格式为XML。目前采用的推送模式是 [推送到服务]
button_batch_update_rule=批量更新灰度规则 button_batch_update_rule=批量更新灰度规则
button_batch_clear_rule=批量清除灰度规则 button_batch_clear_rule=批量清除灰度规则
description_gray_version=灰度版本,输入的格式为[dynamicVersion]或者[dynamicVersion];[localVersion],例如1.1或者1.1;1.0,前者直接更新灰度版本为1.1,后者只是把满足初始版本为1.0条件的服务更新灰度版本为1.1 description_gray_version=灰度版本,输入的格式为[dynamicVersion]或者[dynamicVersion];[localVersion],例如1.1或者1.1;1.0,前者直接更新灰度版本为1.1,后者只是把满足初始版本为1.0条件的服务更新灰度版本为1.1
......
...@@ -9,6 +9,9 @@ show_topology=\u663e\u793a\u670d\u52a1\u62d3\u6251 ...@@ -9,6 +9,9 @@ show_topology=\u663e\u793a\u670d\u52a1\u62d3\u6251
execute_gray_release=\u6267\u884c\u7070\u5ea6\u53d1\u5e03 execute_gray_release=\u6267\u884c\u7070\u5ea6\u53d1\u5e03
execute_gray_router=\u6267\u884c\u7070\u5ea6\u8def\u7531 execute_gray_router=\u6267\u884c\u7070\u5ea6\u8def\u7531
refresh_gray_state=\u5237\u65b0\u7070\u5ea6\u72b6\u6001 refresh_gray_state=\u5237\u65b0\u7070\u5ea6\u72b6\u6001
rule_control_mode=\u89c4\u5219\u63a8\u9001\u6a21\u5f0f
rule_control_mode_to_config_center=\u63a8\u9001\u5230\u8fdc\u7a0b\u914d\u7f6e\u4e2d\u5fc3
rule_control_mode_to_service=\u63a8\u9001\u5230\u670d\u52a1
title_service_cluster_gray_release=\u670d\u52a1\u96c6\u7fa4\u7070\u5ea6\u53d1\u5e03 title_service_cluster_gray_release=\u670d\u52a1\u96c6\u7fa4\u7070\u5ea6\u53d1\u5e03
service_cluster_filter=\u670d\u52a1\u96c6\u7fa4\u8fc7\u6ee4 service_cluster_filter=\u670d\u52a1\u96c6\u7fa4\u8fc7\u6ee4
...@@ -34,6 +37,8 @@ button_batch_update_version=\u6279\u91cf\u66f4\u65b0\u7070\u5ea6\u7248\u672c ...@@ -34,6 +37,8 @@ button_batch_update_version=\u6279\u91cf\u66f4\u65b0\u7070\u5ea6\u7248\u672c
button_batch_clear_version=\u6279\u91cf\u6e05\u9664\u7070\u5ea6\u7248\u672c button_batch_clear_version=\u6279\u91cf\u6e05\u9664\u7070\u5ea6\u7248\u672c
button_update_rule=\u66f4\u65b0\u7070\u5ea6\u89c4\u5219 button_update_rule=\u66f4\u65b0\u7070\u5ea6\u89c4\u5219
button_clear_rule=\u6e05\u9664\u7070\u5ea6\u89c4\u5219 button_clear_rule=\u6e05\u9664\u7070\u5ea6\u89c4\u5219
description_gray_rule_to_config_center=\u7070\u5ea6\u89c4\u5219\uff0c\u8f93\u5165\u7684\u683c\u5f0f\u4e3aXML\u3002\u76ee\u524d\u91c7\u7528\u7684\u63a8\u9001\u6a21\u5f0f\u662f [\u63a8\u9001\u5230\u8fdc\u7a0b\u914d\u7f6e\u4e2d\u5fc3]\uff0c\u53ea\u652f\u6301\u6279\u91cf\u670d\u52a1\u63a8\u9001\uff0c\u4e0d\u652f\u6301\u5355\u4e2a\u670d\u52a1\u63a8\u9001
description_gray_rule_to_service=\u7070\u5ea6\u89c4\u5219\uff0c\u8f93\u5165\u7684\u683c\u5f0f\u4e3aXML\u3002\u76ee\u524d\u91c7\u7528\u7684\u63a8\u9001\u6a21\u5f0f\u662f [\u63a8\u9001\u5230\u670d\u52a1]
button_batch_update_rule=\u6279\u91cf\u66f4\u65b0\u7070\u5ea6\u89c4\u5219 button_batch_update_rule=\u6279\u91cf\u66f4\u65b0\u7070\u5ea6\u89c4\u5219
button_batch_clear_rule=\u6279\u91cf\u6e05\u9664\u7070\u5ea6\u89c4\u5219 button_batch_clear_rule=\u6279\u91cf\u6e05\u9664\u7070\u5ea6\u89c4\u5219
description_gray_version=\u7070\u5ea6\u7248\u672c\uff0c\u8f93\u5165\u7684\u683c\u5f0f\u4e3a[dynamicVersion]\u6216\u8005[dynamicVersion];[localVersion]\uff0c\u4f8b\u59821.1\u6216\u80051.1;1.0\uff0c\u524d\u8005\u76f4\u63a5\u66f4\u65b0\u7070\u5ea6\u7248\u672c\u4e3a1.1\uff0c\u540e\u8005\u53ea\u662f\u628a\u6ee1\u8db3\u521d\u59cb\u7248\u672c\u4e3a1.0\u6761\u4ef6\u7684\u670d\u52a1\u66f4\u65b0\u7070\u5ea6\u7248\u672c\u4e3a1.1 description_gray_version=\u7070\u5ea6\u7248\u672c\uff0c\u8f93\u5165\u7684\u683c\u5f0f\u4e3a[dynamicVersion]\u6216\u8005[dynamicVersion];[localVersion]\uff0c\u4f8b\u59821.1\u6216\u80051.1;1.0\uff0c\u524d\u8005\u76f4\u63a5\u66f4\u65b0\u7070\u5ea6\u7248\u672c\u4e3a1.1\uff0c\u540e\u8005\u53ea\u662f\u628a\u6ee1\u8db3\u521d\u59cb\u7248\u672c\u4e3a1.0\u6761\u4ef6\u7684\u670d\u52a1\u66f4\u65b0\u7070\u5ea6\u7248\u672c\u4e3a1.1
......
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