Add build hash to nodes info API

also, add it to the cat nodes api
This commit is contained in:
Shay Banon 2013-12-30 13:59:37 +01:00
parent 96cca039e9
commit e67cad3127
5 changed files with 37 additions and 7 deletions

View File

@ -21,9 +21,12 @@ package org.elasticsearch;
import org.elasticsearch.common.io.FastStringReader; import org.elasticsearch.common.io.FastStringReader;
import org.elasticsearch.common.io.Streams; import org.elasticsearch.common.io.Streams;
import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.io.stream.StreamOutput;
import org.joda.time.DateTimeZone; import org.joda.time.DateTimeZone;
import org.joda.time.format.ISODateTimeFormat; import org.joda.time.format.ISODateTimeFormat;
import java.io.IOException;
import java.util.Properties; import java.util.Properties;
/** /**
@ -77,4 +80,17 @@ public class Build {
public String timestamp() { public String timestamp() {
return timestamp; return timestamp;
} }
public static Build readBuild(StreamInput in) throws IOException {
String hash = in.readString();
String hashShort = in.readString();
String timestamp = in.readString();
return new Build(hash, hashShort, timestamp);
}
public static void writeBuild(Build build, StreamOutput out) throws IOException {
out.writeString(build.hash());
out.writeString(build.hashShort());
out.writeString(build.timestamp());
}
} }

View File

@ -20,6 +20,7 @@
package org.elasticsearch.action.admin.cluster.node.info; package org.elasticsearch.action.admin.cluster.node.info;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import org.elasticsearch.Build;
import org.elasticsearch.Version; import org.elasticsearch.Version;
import org.elasticsearch.action.support.nodes.NodeOperationResponse; import org.elasticsearch.action.support.nodes.NodeOperationResponse;
import org.elasticsearch.cluster.node.DiscoveryNode; import org.elasticsearch.cluster.node.DiscoveryNode;
@ -51,6 +52,7 @@ public class NodeInfo extends NodeOperationResponse {
private String hostname; private String hostname;
private Version version; private Version version;
private Build build;
@Nullable @Nullable
private Settings settings; private Settings settings;
@ -82,12 +84,13 @@ public class NodeInfo extends NodeOperationResponse {
NodeInfo() { NodeInfo() {
} }
public NodeInfo(@Nullable String hostname, Version version, DiscoveryNode node, @Nullable ImmutableMap<String, String> serviceAttributes, @Nullable Settings settings, public NodeInfo(@Nullable String hostname, Version version, Build build, DiscoveryNode node, @Nullable ImmutableMap<String, String> serviceAttributes, @Nullable Settings settings,
@Nullable OsInfo os, @Nullable ProcessInfo process, @Nullable JvmInfo jvm, @Nullable ThreadPoolInfo threadPool, @Nullable NetworkInfo network, @Nullable OsInfo os, @Nullable ProcessInfo process, @Nullable JvmInfo jvm, @Nullable ThreadPoolInfo threadPool, @Nullable NetworkInfo network,
@Nullable TransportInfo transport, @Nullable HttpInfo http, @Nullable PluginsInfo plugins) { @Nullable TransportInfo transport, @Nullable HttpInfo http, @Nullable PluginsInfo plugins) {
super(node); super(node);
this.hostname = hostname; this.hostname = hostname;
this.version = version; this.version = version;
this.build = build;
this.serviceAttributes = serviceAttributes; this.serviceAttributes = serviceAttributes;
this.settings = settings; this.settings = settings;
this.os = os; this.os = os;
@ -115,6 +118,13 @@ public class NodeInfo extends NodeOperationResponse {
return version; return version;
} }
/**
* The build version of the node.
*/
public Build getBuild() {
return this.build;
}
/** /**
* The service attributes of the node. * The service attributes of the node.
*/ */
@ -196,6 +206,7 @@ public class NodeInfo extends NodeOperationResponse {
hostname = in.readString(); hostname = in.readString();
} }
version = Version.readVersion(in); version = Version.readVersion(in);
build = Build.readBuild(in);
if (in.readBoolean()) { if (in.readBoolean()) {
ImmutableMap.Builder<String, String> builder = ImmutableMap.builder(); ImmutableMap.Builder<String, String> builder = ImmutableMap.builder();
int size = in.readVInt(); int size = in.readVInt();
@ -243,6 +254,7 @@ public class NodeInfo extends NodeOperationResponse {
out.writeString(hostname); out.writeString(hostname);
} }
out.writeVInt(version.id); out.writeVInt(version.id);
Build.writeBuild(build, out);
if (getServiceAttributes() == null) { if (getServiceAttributes() == null) {
out.writeBoolean(false); out.writeBoolean(false);
} else { } else {

View File

@ -84,9 +84,8 @@ public class NodesInfoResponse extends NodesOperationResponse<NodeInfo> implemen
builder.field("hostname", nodeInfo.getHostname(), XContentBuilder.FieldCaseConversion.NONE); builder.field("hostname", nodeInfo.getHostname(), XContentBuilder.FieldCaseConversion.NONE);
} }
if (nodeInfo.getVersion() != null) {
builder.field("version", nodeInfo.getVersion()); builder.field("version", nodeInfo.getVersion());
} builder.field("build", nodeInfo.getBuild().hashShort());
if (nodeInfo.getServiceAttributes() != null) { if (nodeInfo.getServiceAttributes() != null) {
for (Map.Entry<String, String> nodeAttribute : nodeInfo.getServiceAttributes().entrySet()) { for (Map.Entry<String, String> nodeAttribute : nodeInfo.getServiceAttributes().entrySet()) {

View File

@ -20,6 +20,7 @@
package org.elasticsearch.node.service; package org.elasticsearch.node.service;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import org.elasticsearch.Build;
import org.elasticsearch.Version; import org.elasticsearch.Version;
import org.elasticsearch.action.admin.cluster.node.info.NodeInfo; import org.elasticsearch.action.admin.cluster.node.info.NodeInfo;
import org.elasticsearch.action.admin.cluster.node.stats.NodeStats; import org.elasticsearch.action.admin.cluster.node.stats.NodeStats;
@ -115,7 +116,7 @@ public class NodeService extends AbstractComponent {
} }
public NodeInfo info() { public NodeInfo info() {
return new NodeInfo(hostname, version, disovery.localNode(), serviceAttributes, return new NodeInfo(hostname, version, Build.CURRENT, disovery.localNode(), serviceAttributes,
settings, settings,
monitorService.osService().info(), monitorService.osService().info(),
monitorService.processService().info(), monitorService.processService().info(),
@ -130,7 +131,7 @@ public class NodeService extends AbstractComponent {
public NodeInfo info(boolean settings, boolean os, boolean process, boolean jvm, boolean threadPool, public NodeInfo info(boolean settings, boolean os, boolean process, boolean jvm, boolean threadPool,
boolean network, boolean transport, boolean http, boolean plugin) { boolean network, boolean transport, boolean http, boolean plugin) {
return new NodeInfo(hostname, version, disovery.localNode(), serviceAttributes, return new NodeInfo(hostname, version, Build.CURRENT, disovery.localNode(), serviceAttributes,
settings ? this.settings : null, settings ? this.settings : null,
os ? monitorService.osService().info() : null, os ? monitorService.osService().info() : null,
process ? monitorService.processService().info() : null, process ? monitorService.processService().info() : null,

View File

@ -127,7 +127,8 @@ public class RestNodesAction extends AbstractCatAction {
table.addCell("ip", "desc:ip address"); table.addCell("ip", "desc:ip address");
table.addCell("port", "desc:bound transport port"); table.addCell("port", "desc:bound transport port");
table.addCell("es", "default:false;desc:es version"); table.addCell("version", "default:false;desc:es version");
table.addCell("build", "default:false;desc:es build hash");
table.addCell("jdk", "default:false;desc:jdk version"); table.addCell("jdk", "default:false;desc:jdk version");
table.addCell("diskAvail", "default:false;text-align:right;desc:available disk space"); table.addCell("diskAvail", "default:false;text-align:right;desc:available disk space");
table.addCell("heapPercent", "text-align:right;desc:used heap ratio"); table.addCell("heapPercent", "text-align:right;desc:used heap ratio");
@ -162,6 +163,7 @@ public class RestNodesAction extends AbstractCatAction {
table.addCell(((InetSocketTransportAddress) node.address()).address().getPort()); table.addCell(((InetSocketTransportAddress) node.address()).address().getPort());
table.addCell(info == null ? null : info.getVersion().number()); table.addCell(info == null ? null : info.getVersion().number());
table.addCell(info == null ? null : info.getBuild().hashShort());
table.addCell(info == null ? null : info.getJvm().version()); table.addCell(info == null ? null : info.getJvm().version());
table.addCell(stats == null ? null : stats.getFs() == null ? null : stats.getFs().total().getAvailable()); table.addCell(stats == null ? null : stats.getFs() == null ? null : stats.getFs().total().getAvailable());
table.addCell(stats == null ? null : stats.getJvm().getMem().getHeapUsedPrecent()); table.addCell(stats == null ? null : stats.getJvm().getMem().getHeapUsedPrecent());