Added more node information to admin console
git-svn-id: https://hyracks.googlecode.com/svn/branches/hyracks_dev_next@1114 123451ca-8445-de46-9d55-352943316053
diff --git a/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/NodeControllerState.java b/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/NodeControllerState.java
index 2b7563a..3c94b9e 100644
--- a/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/NodeControllerState.java
+++ b/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/NodeControllerState.java
@@ -15,8 +15,11 @@
package edu.uci.ics.hyracks.control.cc;
import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
import java.util.Set;
+import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@@ -48,6 +51,22 @@
private final int nProcessors;
+ private final String vmName;
+
+ private final String vmVersion;
+
+ private final String vmVendor;
+
+ private final String classpath;
+
+ private final String libraryPath;
+
+ private final String bootClasspath;
+
+ private final List<String> inputArguments;
+
+ private final Map<String, String> systemProperties;
+
private final HeartbeatSchema hbSchema;
private final long[] hbTime;
@@ -102,6 +121,15 @@
arch = reg.getArch();
osVersion = reg.getOSVersion();
nProcessors = reg.getNProcessors();
+ vmName = reg.getVmName();
+ vmVersion = reg.getVmVersion();
+ vmVendor = reg.getVmVendor();
+ classpath = reg.getClasspath();
+ libraryPath = reg.getLibraryPath();
+ bootClasspath = reg.getBootClasspath();
+ inputArguments = reg.getInputArguments();
+ systemProperties = reg.getSystemProperties();
+
hbSchema = reg.getHeartbeatSchema();
hbTime = new long[RRD_SIZE];
@@ -199,6 +227,13 @@
o.put("arch", arch);
o.put("os-version", osVersion);
o.put("num-processors", nProcessors);
+ o.put("vm-name", vmName);
+ o.put("vm-version", vmVersion);
+ o.put("vm-vendor", vmVendor);
+ o.put("classpath", classpath);
+ o.put("library-path", libraryPath);
+ o.put("boot-classpath", bootClasspath);
+ o.put("input-arguments", new JSONArray(inputArguments));
o.put("rrd-ptr", rrdPtr);
o.put("heartbeat-times", hbTime);
o.put("heap-init-sizes", heapInitSize);
diff --git a/hyracks-control-cc/src/main/resources/edu/uci/ics/hyracks/control/cc/adminconsole/pages/NodeDetailsPage.html b/hyracks-control-cc/src/main/resources/edu/uci/ics/hyracks/control/cc/adminconsole/pages/NodeDetailsPage.html
index 6d0a56b..6a765e4 100644
--- a/hyracks-control-cc/src/main/resources/edu/uci/ics/hyracks/control/cc/adminconsole/pages/NodeDetailsPage.html
+++ b/hyracks-control-cc/src/main/resources/edu/uci/ics/hyracks/control/cc/adminconsole/pages/NodeDetailsPage.html
@@ -16,6 +16,13 @@
<tr><td>OS Name</td><td><span id="os-name"></span></td></tr>
<tr><td>OS Version</td><td><span id="os-version"></span></td></tr>
<tr><td># of processors</td><td><span id="num-processors"></span></td></tr>
+ <tr><td>Java VM Name</td><td><span id="vm-name"></span></td></tr>
+ <tr><td>Java VM Version</td><td><span id="vm-version"></span></td></tr>
+ <tr><td>Java VM Vendor</td><td><span id="vm-vendor"></span></td></tr>
+ <tr><td>Java Classpath</td><td><span id="classpath"></span></td></tr>
+ <tr><td>Java Library Path</td><td><span id="library-path"></span></td></tr>
+ <tr><td>Java Boot Classpath</td><td><span id="boot-classpath"></span></td></tr>
+ <tr><td>Java VM Arguments</td><td><div id="input-arguments"></div></td></tr>
</table>
</div>
diff --git a/hyracks-control-cc/src/main/resources/static/javascript/adminconsole/NodeDetailsPage.js b/hyracks-control-cc/src/main/resources/static/javascript/adminconsole/NodeDetailsPage.js
index 57ebf00..1847b32 100644
--- a/hyracks-control-cc/src/main/resources/static/javascript/adminconsole/NodeDetailsPage.js
+++ b/hyracks-control-cc/src/main/resources/static/javascript/adminconsole/NodeDetailsPage.js
@@ -26,6 +26,21 @@
$('#os-name')[0].innerHTML = result['os-name'];
$('#os-version')[0].innerHTML = result['os-version'];
$('#num-processors')[0].innerHTML = result['num-processors'];
+ $('#vm-name')[0].innerHTML = result['vm-name'];
+ $('#vm-version')[0].innerHTML = result['vm-version'];
+ $('#vm-vendor')[0].innerHTML = result['vm-vendor'];
+ $('#classpath')[0].innerHTML = result['classpath'];
+ $('#library-path')[0].innerHTML = result['library-path'];
+ $('#boot-classpath')[0].innerHTML = result['boot-classpath'];
+ var argsHTML = "";
+ var args = result['input-arguments'];
+ for ( var i = 0; i < args.length; ++i) {
+ if (argsHTML != "") {
+ argsHTML += "<br/>";
+ }
+ argsHTML += "<span>" + args[i] + "</span>";
+ }
+ $('#input-arguments')[0].innerHTML = argsHTML;
var sysLoad = result['system-load-averages'];
var heapUsageInitSizes = result['heap-init-sizes'];
var heapUsageUsedSizes = result['heap-used-sizes'];
diff --git a/hyracks-control-common/src/main/java/edu/uci/ics/hyracks/control/common/controllers/NodeRegistration.java b/hyracks-control-common/src/main/java/edu/uci/ics/hyracks/control/common/controllers/NodeRegistration.java
index f6dde10..91cfecf 100644
--- a/hyracks-control-common/src/main/java/edu/uci/ics/hyracks/control/common/controllers/NodeRegistration.java
+++ b/hyracks-control-common/src/main/java/edu/uci/ics/hyracks/control/common/controllers/NodeRegistration.java
@@ -16,6 +16,8 @@
import java.io.Serializable;
import java.net.InetSocketAddress;
+import java.util.List;
+import java.util.Map;
import edu.uci.ics.hyracks.api.comm.NetworkAddress;
import edu.uci.ics.hyracks.control.common.heartbeat.HeartbeatSchema;
@@ -39,10 +41,28 @@
private final int nProcessors;
+ private final String vmName;
+
+ private final String vmVersion;
+
+ private final String vmVendor;
+
+ private final String classpath;
+
+ private final String libraryPath;
+
+ private final String bootClasspath;
+
+ private final List<String> inputArguments;
+
+ private final Map<String, String> systemProperties;
+
private final HeartbeatSchema hbSchema;
public NodeRegistration(InetSocketAddress ncAddress, String nodeId, NCConfig ncConfig, NetworkAddress dataPort,
- String osName, String arch, String osVersion, int nProcessors, HeartbeatSchema hbSchema) {
+ String osName, String arch, String osVersion, int nProcessors, String vmName, String vmVersion,
+ String vmVendor, String classpath, String libraryPath, String bootClasspath, List<String> inputArguments,
+ Map<String, String> systemProperties, HeartbeatSchema hbSchema) {
this.ncAddress = ncAddress;
this.nodeId = nodeId;
this.ncConfig = ncConfig;
@@ -51,6 +71,14 @@
this.arch = arch;
this.osVersion = osVersion;
this.nProcessors = nProcessors;
+ this.vmName = vmName;
+ this.vmVersion = vmVersion;
+ this.vmVendor = vmVendor;
+ this.classpath = classpath;
+ this.libraryPath = libraryPath;
+ this.bootClasspath = bootClasspath;
+ this.inputArguments = inputArguments;
+ this.systemProperties = systemProperties;
this.hbSchema = hbSchema;
}
@@ -89,4 +117,36 @@
public HeartbeatSchema getHeartbeatSchema() {
return hbSchema;
}
+
+ public String getVmName() {
+ return vmName;
+ }
+
+ public String getVmVersion() {
+ return vmVersion;
+ }
+
+ public String getVmVendor() {
+ return vmVendor;
+ }
+
+ public String getClasspath() {
+ return classpath;
+ }
+
+ public String getLibraryPath() {
+ return libraryPath;
+ }
+
+ public String getBootClasspath() {
+ return bootClasspath;
+ }
+
+ public List<String> getInputArguments() {
+ return inputArguments;
+ }
+
+ public Map<String, String> getSystemProperties() {
+ return systemProperties;
+ }
}
\ No newline at end of file
diff --git a/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/NodeControllerService.java b/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/NodeControllerService.java
index 0f512a7..b3eccb5 100644
--- a/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/NodeControllerService.java
+++ b/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/NodeControllerService.java
@@ -182,7 +182,9 @@
HeartbeatSchema hbSchema = new HeartbeatSchema(gcInfos);
ccs.registerNode(new NodeRegistration(ipc.getSocketAddress(), id, ncConfig, netManager.getNetworkAddress(),
osMXBean.getName(), osMXBean.getArch(), osMXBean.getVersion(), osMXBean.getAvailableProcessors(),
- hbSchema));
+ runtimeMXBean.getVmName(), runtimeMXBean.getVmVersion(), runtimeMXBean.getVmVendor(), runtimeMXBean
+ .getClassPath(), runtimeMXBean.getLibraryPath(), runtimeMXBean.getBootClassPath(),
+ runtimeMXBean.getInputArguments(), runtimeMXBean.getSystemProperties(), hbSchema));
synchronized (this) {
while (registrationPending) {