Skip to content

Commit 05ca8ba

Browse files
committed
reuse some code from NetworkTopologyServlet
1 parent 73d8baa commit 05ca8ba

File tree

3 files changed

+9
-81
lines changed

3 files changed

+9
-81
lines changed

hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterNetworkTopologyServlet.java

Lines changed: 4 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,15 @@
1717
*/
1818
package org.apache.hadoop.hdfs.server.federation.router;
1919

20-
import com.fasterxml.jackson.core.JsonFactory;
21-
import com.fasterxml.jackson.core.JsonGenerator;
2220
import org.apache.hadoop.hdfs.protocol.DatanodeInfo;
2321
import org.apache.hadoop.hdfs.protocol.HdfsConstants;
24-
import org.apache.hadoop.net.NetUtils;
22+
import org.apache.hadoop.hdfs.server.namenode.NetworkTopologyServlet;
2523
import org.apache.hadoop.net.Node;
26-
import org.apache.hadoop.thirdparty.com.google.common.annotations.VisibleForTesting;
2724
import org.apache.hadoop.util.StringUtils;
2825

2926
import javax.servlet.ServletContext;
30-
import javax.servlet.http.HttpServlet;
3127
import javax.servlet.http.HttpServletRequest;
3228
import javax.servlet.http.HttpServletResponse;
33-
import javax.ws.rs.core.HttpHeaders;
3429
import java.io.IOException;
3530
import java.io.PrintStream;
3631
import java.util.ArrayList;
@@ -42,7 +37,7 @@
4237
/**
4338
* A servlet to print out the network topology from router.
4439
*/
45-
public class RouterNetworkTopologyServlet extends HttpServlet {
40+
public class RouterNetworkTopologyServlet extends NetworkTopologyServlet {
4641

4742
public static final String SERVLET_NAME = "topology";
4843
public static final String PATH_SPEC = "/topology";
@@ -52,7 +47,7 @@ public class RouterNetworkTopologyServlet extends HttpServlet {
5247

5348
@Override
5449
public void doGet(HttpServletRequest request, HttpServletResponse response)
55-
throws IOException {
50+
throws IOException {
5651
final ServletContext context = getServletContext();
5752

5853
String format = parseAcceptHeader(request);
@@ -89,7 +84,7 @@ public void doGet(HttpServletRequest request, HttpServletResponse response)
8984
* @param datanodeInfos datanode Infos
9085
* @param format the response format
9186
*/
92-
public void printTopology(PrintStream stream, DatanodeInfo[] datanodeInfos,
87+
private void printTopology(PrintStream stream, DatanodeInfo[] datanodeInfos,
9388
String format) throws IOException, BadFormatException {
9489
if (datanodeInfos.length == 0) {
9590
stream.print("No DataNodes");
@@ -118,70 +113,4 @@ public void printTopology(PrintStream stream, DatanodeInfo[] datanodeInfos,
118113
throw new BadFormatException("Bad format: " + format);
119114
}
120115
}
121-
122-
private void printJsonFormat(PrintStream stream, Map<String,
123-
TreeSet<String>> tree, ArrayList<String> racks) throws IOException {
124-
JsonFactory dumpFactory = new JsonFactory();
125-
JsonGenerator dumpGenerator = dumpFactory.createGenerator(stream);
126-
dumpGenerator.writeStartArray();
127-
128-
for(String r : racks) {
129-
dumpGenerator.writeStartObject();
130-
dumpGenerator.writeFieldName(r);
131-
TreeSet<String> nodes = tree.get(r);
132-
dumpGenerator.writeStartArray();
133-
134-
for(String n : nodes) {
135-
dumpGenerator.writeStartObject();
136-
dumpGenerator.writeStringField("ip", n);
137-
String hostname = NetUtils.getHostNameOfIP(n);
138-
if(hostname != null) {
139-
dumpGenerator.writeStringField("hostname", hostname);
140-
}
141-
dumpGenerator.writeEndObject();
142-
}
143-
dumpGenerator.writeEndArray();
144-
dumpGenerator.writeEndObject();
145-
}
146-
dumpGenerator.writeEndArray();
147-
dumpGenerator.flush();
148-
149-
if (!dumpGenerator.isClosed()) {
150-
dumpGenerator.close();
151-
}
152-
}
153-
154-
private void printTextFormat(PrintStream stream, Map<String,
155-
TreeSet<String>> tree, ArrayList<String> racks) {
156-
for(String r : racks) {
157-
stream.println("Rack: " + r);
158-
TreeSet<String> nodes = tree.get(r);
159-
160-
for(String n : nodes) {
161-
stream.print(" " + n);
162-
String hostname = NetUtils.getHostNameOfIP(n);
163-
if(hostname != null) {
164-
stream.print(" (" + hostname + ")");
165-
}
166-
stream.println();
167-
}
168-
stream.println();
169-
}
170-
}
171-
172-
@VisibleForTesting
173-
static String parseAcceptHeader(HttpServletRequest request) {
174-
String format = request.getHeader(HttpHeaders.ACCEPT);
175-
return format != null && format.contains(FORMAT_JSON) ?
176-
FORMAT_JSON : FORMAT_TEXT;
177-
}
178-
179-
public static class BadFormatException extends Exception {
180-
private static final long serialVersionUID = 1L;
181-
182-
public BadFormatException(String msg) {
183-
super(msg);
184-
}
185-
}
186-
187116
}

hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterNetworkTopologyServlet.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ public static void setUp() throws Exception {
7272
MultipleDestinationMountTableResolver.class);
7373
clusterNoDatanodes.addNamenodeOverrides(hdfsConf);
7474
clusterNoDatanodes.addRouterOverrides(routerConf);
75-
clusterNoDatanodes.shutdown();
7675
clusterNoDatanodes.setNumDatanodesPerNameservice(0);
7776
clusterNoDatanodes.setIndependentDNs();
7877
clusterNoDatanodes.startCluster();

hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NetworkTopologyServlet.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public void doGet(HttpServletRequest request, HttpServletResponse response)
9090
* @param leaves leaves nodes under base scope
9191
* @param format the response format
9292
*/
93-
public void printTopology(PrintStream stream, List<Node> leaves,
93+
private void printTopology(PrintStream stream, List<Node> leaves,
9494
String format) throws BadFormatException, IOException {
9595
if (leaves.isEmpty()) {
9696
stream.print("No DataNodes");
@@ -120,7 +120,7 @@ public void printTopology(PrintStream stream, List<Node> leaves,
120120
}
121121
}
122122

123-
private void printJsonFormat(PrintStream stream, Map<String,
123+
protected void printJsonFormat(PrintStream stream, Map<String,
124124
TreeSet<String>> tree, ArrayList<String> racks) throws IOException {
125125
JsonFactory dumpFactory = new JsonFactory();
126126
JsonGenerator dumpGenerator = dumpFactory.createGenerator(stream);
@@ -152,8 +152,8 @@ private void printJsonFormat(PrintStream stream, Map<String,
152152
}
153153
}
154154

155-
private void printTextFormat(PrintStream stream, Map<String,
156-
TreeSet<String>> tree, ArrayList<String> racks) {
155+
protected void printTextFormat(PrintStream stream, Map<String,
156+
TreeSet<String>> tree, ArrayList<String> racks) {
157157
for(String r : racks) {
158158
stream.println("Rack: " + r);
159159
TreeSet<String> nodes = tree.get(r);
@@ -171,7 +171,7 @@ private void printTextFormat(PrintStream stream, Map<String,
171171
}
172172

173173
@VisibleForTesting
174-
static String parseAcceptHeader(HttpServletRequest request) {
174+
protected static String parseAcceptHeader(HttpServletRequest request) {
175175
String format = request.getHeader(HttpHeaders.ACCEPT);
176176
return format != null && format.contains(FORMAT_JSON) ?
177177
FORMAT_JSON : FORMAT_TEXT;

0 commit comments

Comments
 (0)