HDFS-5661. Browsing FileSystem via web ui, should use datanode's fqdn instead of ip address. Contributed by Benoy Antony.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1552177 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Jing Zhao 2013-12-19 00:27:16 +00:00
parent e07f3c87cd
commit a9d80ae59d
3 changed files with 20 additions and 16 deletions

View File

@ -991,6 +991,9 @@ Release 2.3.0 - UNRELEASED
HDFS-5657. race condition causes writeback state error in NFS gateway (brandonli) HDFS-5657. race condition causes writeback state error in NFS gateway (brandonli)
HDFS-5661. Browsing FileSystem via web ui, should use datanode's fqdn instead of ip
address. (Benoy Antony via jing9)
Release 2.2.0 - 2013-10-13 Release 2.2.0 - 2013-10-13
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -118,16 +118,29 @@ public class JspHelper {
} }
} }
/**
* convenience method for canonicalizing host name.
* @param addr name:port or name
* @return canonicalized host name
*/
public static String canonicalize(String addr) {
// default port 1 is supplied to allow addr without port.
// the port will be ignored.
return NetUtils.createSocketAddr(addr, 1).getAddress()
.getCanonicalHostName();
}
/** /**
* A helper class that generates the correct URL for different schema. * A helper class that generates the correct URL for different schema.
* *
*/ */
public static final class Url { public static final class Url {
public static String authority(String scheme, DatanodeID d) { public static String authority(String scheme, DatanodeID d) {
String fqdn = canonicalize(d.getIpAddr());
if (scheme.equals("http")) { if (scheme.equals("http")) {
return d.getInfoAddr(); return fqdn + ":" + d.getInfoPort();
} else if (scheme.equals("https")) { } else if (scheme.equals("https")) {
return d.getInfoSecureAddr(); return fqdn + ":" + d.getInfoSecurePort();
} else { } else {
throw new IllegalArgumentException("Unknown scheme:" + scheme); throw new IllegalArgumentException("Unknown scheme:" + scheme);
} }

View File

@ -77,18 +77,6 @@ public class DatanodeJspHelper {
}); });
} }
/**
* Internal convenience method for canonicalizing host name.
* @param addr name:port or name
* @return canonicalized host name
*/
private static String canonicalize(String addr) {
// default port 1 is supplied to allow addr without port.
// the port will be ignored.
return NetUtils.createSocketAddr(addr, 1).getAddress()
.getCanonicalHostName();
}
/** /**
* Get the default chunk size. * Get the default chunk size.
* @param conf the configuration * @param conf the configuration
@ -228,7 +216,7 @@ public class DatanodeJspHelper {
} }
} }
out.print("<br><a href=\"///" out.print("<br><a href=\"///"
+ canonicalize(nnAddr) + ":" + JspHelper.canonicalize(nnAddr) + ":"
+ namenodeInfoPort + "/dfshealth.jsp\">Go back to DFS home</a>"); + namenodeInfoPort + "/dfshealth.jsp\">Go back to DFS home</a>");
dfs.close(); dfs.close();
} }
@ -359,7 +347,7 @@ public class DatanodeJspHelper {
// generate a table and dump the info // generate a table and dump the info
out.println("\n<table>"); out.println("\n<table>");
String nnCanonicalName = canonicalize(nnAddr); String nnCanonicalName = JspHelper.canonicalize(nnAddr);
for (LocatedBlock cur : blocks) { for (LocatedBlock cur : blocks) {
out.print("<tr>"); out.print("<tr>");
final String blockidstring = Long.toString(cur.getBlock().getBlockId()); final String blockidstring = Long.toString(cur.getBlock().getBlockId());