Added ability to force mastership re-balancing between instances from the GUI.
Change-Id: I98e56deb3e2b00df630ed85b596c8e35b3d6efab
diff --git a/web/gui/src/main/java/org/onlab/onos/gui/TopologyViewWebSocket.java b/web/gui/src/main/java/org/onlab/onos/gui/TopologyViewWebSocket.java
index 84e2e02..7477e60 100644
--- a/web/gui/src/main/java/org/onlab/onos/gui/TopologyViewWebSocket.java
+++ b/web/gui/src/main/java/org/onlab/onos/gui/TopologyViewWebSocket.java
@@ -27,6 +27,7 @@
import org.onlab.onos.event.AbstractEventAccumulator;
import org.onlab.onos.event.Event;
import org.onlab.onos.event.EventAccumulator;
+import org.onlab.onos.mastership.MastershipAdminService;
import org.onlab.onos.mastership.MastershipEvent;
import org.onlab.onos.mastership.MastershipListener;
import org.onlab.onos.net.ConnectPoint;
@@ -233,6 +234,9 @@
requestSummary(event);
} else if (type.equals("cancelSummary")) {
cancelSummary(event);
+
+ } else if (type.equals("equalizeMasters")) {
+ equalizeMasters(event);
}
}
@@ -449,6 +453,12 @@
}
+ // Forces mastership role rebalancing.
+ private void equalizeMasters(ObjectNode event) {
+ directory.get(MastershipAdminService.class).balanceRoles();
+ }
+
+
// Adds all internal listeners.
private void addListeners() {
clusterService.addListener(clusterListener);
diff --git a/web/gui/src/main/webapp/d3Utils.js b/web/gui/src/main/webapp/d3Utils.js
index 33bba5a..0161459 100644
--- a/web/gui/src/main/webapp/d3Utils.js
+++ b/web/gui/src/main/webapp/d3Utils.js
@@ -140,12 +140,12 @@
// TODO: tune colors for light and dark themes
// Note: These colors look good on the white background. Still, need to tune for dark.
- // blue brown purple sea green brick red dark teal lime
- var lightNorm = ['#3E5780', '#78533B', '#8A2979', '#018D61', '#CB4D28', '#006D73', '#56AF00'],
- lightMute = ['#A8B8CC', '#CCB3A8', '#D19FCE', '#96D6BF', '#FFC2BD', '#8FCCCA', '#CAEAA4'],
+ // blue brown brick red sea green purple dark teal lime
+ var lightNorm = ['#3E5780', '#78533B', '#CB4D28', '#018D61', '#8A2979', '#006D73', '#56AF00'],
+ lightMute = ['#A8B8CC', '#CCB3A8', '#FFC2BD', '#96D6BF', '#D19FCE', '#8FCCCA', '#CAEAA4'],
- darkNorm = ['#3E5780', '#78533B', '#8A2979', '#018D61', '#CB4D28', '#006D73', '#56AF00'],
- darkMute = ['#A8B8CC', '#CCB3A8', '#D19FCE', '#96D6BF', '#FFC2BD', '#8FCCCA', '#CAEAA4'];
+ darkNorm = ['#3E5780', '#78533B', '#CB4D28', '#018D61', '#8A2979', '#006D73', '#56AF00'],
+ darkMute = ['#A8B8CC', '#CCB3A8', '#FFC2BD', '#96D6BF', '#D19FCE', '#8FCCCA', '#CAEAA4'];
function cat7() {
var colors = {
diff --git a/web/gui/src/main/webapp/onos.js b/web/gui/src/main/webapp/onos.js
index 53d68f6..5dfcad1 100644
--- a/web/gui/src/main/webapp/onos.js
+++ b/web/gui/src/main/webapp/onos.js
@@ -97,6 +97,7 @@
case 187: return 'equals';
case 189: return 'dash';
case 191: return 'slash';
+ case 192: return 'backQuote';
default:
if ((code >= 48 && code <= 57) ||
(code >= 65 && code <= 90)) {
diff --git a/web/gui/src/main/webapp/onosQuickHelp.js b/web/gui/src/main/webapp/onosQuickHelp.js
index 596276b..9e2a5ec 100644
--- a/web/gui/src/main/webapp/onosQuickHelp.js
+++ b/web/gui/src/main/webapp/onosQuickHelp.js
@@ -55,6 +55,7 @@
equals: '=',
dash: '-',
slash: '/',
+ backQuote: '`',
leftArrow: 'L-arrow',
upArrow: 'U-arrow',
rightArrow: 'R-arrow',
diff --git a/web/gui/src/main/webapp/topo.js b/web/gui/src/main/webapp/topo.js
index 6673b28..4018757 100644
--- a/web/gui/src/main/webapp/topo.js
+++ b/web/gui/src/main/webapp/topo.js
@@ -140,6 +140,7 @@
equals: injectStartupEvents,
dash: injectTestEvent,
+ E: [equalizeMasters, 'Equalize mastership roles'],
O: [toggleSummary, 'Toggle ONOS summary pane'],
I: [toggleInstances, 'Toggle ONOS instances pane'],
D: [toggleDetails, 'Disable / enable details pane'],
@@ -926,6 +927,11 @@
updateDeviceColors();
}
+ function equalizeMasters() {
+ flash('Equalizing master roles');
+ sendMessage('equalizeMasters');
+ }
+
function toggleSummary() {
if (!summaryPane.isVisible()) {
requestSummary();