From 00481ea449e995b016896338b0fc41e773c5c64c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Laleve=CC=81e?= Date: Mon, 31 Oct 2011 14:50:18 +0100 Subject: [PATCH] Add the hostname to the node info --- .../admin/cluster/node/info/NodeInfo.java | 31 ++++++++++++++++++- .../node/service/NodeService.java | 12 ++++++- .../node/info/RestNodesInfoAction.java | 4 +++ 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/elasticsearch/action/admin/cluster/node/info/NodeInfo.java b/src/main/java/org/elasticsearch/action/admin/cluster/node/info/NodeInfo.java index 58fde8e2e5d7e..d53a52bce46f6 100644 --- a/src/main/java/org/elasticsearch/action/admin/cluster/node/info/NodeInfo.java +++ b/src/main/java/org/elasticsearch/action/admin/cluster/node/info/NodeInfo.java @@ -44,6 +44,9 @@ public class NodeInfo extends NodeOperationResponse { private ImmutableMap serviceAttributes; + @Nullable + private String hostname; + private Settings settings; private OsInfo os; @@ -61,10 +64,11 @@ public class NodeInfo extends NodeOperationResponse { NodeInfo() { } - public NodeInfo(DiscoveryNode node, ImmutableMap serviceAttributes, Settings settings, + public NodeInfo(String hostname, DiscoveryNode node, ImmutableMap serviceAttributes, Settings settings, OsInfo os, ProcessInfo process, JvmInfo jvm, NetworkInfo network, TransportInfo transport, @Nullable HttpInfo http) { super(node); + this.hostname = hostname; this.serviceAttributes = serviceAttributes; this.settings = settings; this.os = os; @@ -75,6 +79,22 @@ public NodeInfo(DiscoveryNode node, ImmutableMap serviceAttribut this.http = http; } + /** + * System's hostname. null in case of UnknownHostException + */ + @Nullable + public String hostname() { + return this.hostname; + } + + /** + * System's hostname. null in case of UnknownHostException + */ + @Nullable + public String getHostname() { + return hostname(); + } + /** * The service attributes of the node. */ @@ -184,6 +204,9 @@ public static NodeInfo readNodeInfo(StreamInput in) throws IOException { @Override public void readFrom(StreamInput in) throws IOException { super.readFrom(in); + if (in.readBoolean()) { + hostname = in.readUTF(); + } ImmutableMap.Builder builder = ImmutableMap.builder(); int size = in.readVInt(); for (int i = 0; i < size; i++) { @@ -214,6 +237,12 @@ public void readFrom(StreamInput in) throws IOException { @Override public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); + if (hostname == null) { + out.writeBoolean(false); + } else { + out.writeBoolean(true); + out.writeUTF(hostname); + } out.writeVInt(serviceAttributes.size()); for (Map.Entry entry : serviceAttributes.entrySet()) { out.writeUTF(entry.getKey()); diff --git a/src/main/java/org/elasticsearch/node/service/NodeService.java b/src/main/java/org/elasticsearch/node/service/NodeService.java index 86cc371799e05..74955db9f470e 100644 --- a/src/main/java/org/elasticsearch/node/service/NodeService.java +++ b/src/main/java/org/elasticsearch/node/service/NodeService.java @@ -19,6 +19,8 @@ package org.elasticsearch.node.service; +import java.net.InetAddress; + import com.google.common.collect.ImmutableMap; import org.elasticsearch.action.admin.cluster.node.info.NodeInfo; import org.elasticsearch.action.admin.cluster.node.stats.NodeStats; @@ -27,6 +29,7 @@ import org.elasticsearch.common.collect.MapBuilder; import org.elasticsearch.common.component.AbstractComponent; import org.elasticsearch.common.inject.Inject; +import org.elasticsearch.common.network.NetworkUtils; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.discovery.Discovery; import org.elasticsearch.http.HttpServer; @@ -51,6 +54,9 @@ public class NodeService extends AbstractComponent { private volatile ImmutableMap serviceAttributes = ImmutableMap.of(); + @Nullable + private String hostname; + @Inject public NodeService(Settings settings, MonitorService monitorService, Discovery discovery, ClusterService clusterService, TransportService transportService, IndicesService indicesService) { super(settings); @@ -59,6 +65,10 @@ public NodeService(Settings settings, MonitorService monitorService, Discovery d this.transportService = transportService; this.indicesService = indicesService; discovery.setNodeService(this); + InetAddress address = NetworkUtils.getLocalAddress(); + if (address != null) { + this.hostname = address.getHostName(); + } } public void setHttpServer(@Nullable HttpServer httpServer) { @@ -91,7 +101,7 @@ public ImmutableMap attributes() { } public NodeInfo info() { - return new NodeInfo(clusterService.state().nodes().localNode(), serviceAttributes, settings, + return new NodeInfo(hostname, clusterService.state().nodes().localNode(), serviceAttributes, settings, monitorService.osService().info(), monitorService.processService().info(), monitorService.jvmService().info(), monitorService.networkService().info(), transportService.info(), httpServer == null ? null : httpServer.info()); diff --git a/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/info/RestNodesInfoAction.java b/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/info/RestNodesInfoAction.java index 184e3ed9c6cca..22d3a0ac3d89f 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/info/RestNodesInfoAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/info/RestNodesInfoAction.java @@ -73,6 +73,10 @@ public void onResponse(NodesInfoResponse result) { builder.field("name", nodeInfo.node().name(), XContentBuilder.FieldCaseConversion.NONE); builder.field("transport_address", nodeInfo.node().address().toString()); + if (nodeInfo.hostname() != null) { + builder.field("hostname", nodeInfo.hostname(), XContentBuilder.FieldCaseConversion.NONE); + } + for (Map.Entry nodeAttribute : nodeInfo.serviceAttributes().entrySet()) { builder.field(nodeAttribute.getKey(), nodeAttribute.getValue()); }