diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java index e9f56289f62..238b5293e76 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java @@ -333,9 +333,22 @@ public class NamenodeWebHdfsMethods { throw new IOException("No active nodes contain this block"); } - private Token generateDelegationToken( - final NameNode namenode, final UserGroupInformation ugi, + public long renewDelegationToken(Token token) + throws IOException { + ClientProtocol cp = getRpcClientProtocol(); + return cp.renewDelegationToken(token); + } + + public void cancelDelegationToken(Token token) + throws IOException { + ClientProtocol cp = getRpcClientProtocol(); + cp.cancelDelegationToken(token); + } + + public Token generateDelegationToken( + final UserGroupInformation ugi, final String renewer) throws IOException { + final NameNode namenode = (NameNode)context.getAttribute("name.node"); final Credentials c = DelegationTokenSecretManager.createCredentials( namenode, ugi, renewer != null? renewer: ugi.getShortUserName()); if (c == null) { @@ -380,7 +393,7 @@ public class NamenodeWebHdfsMethods { } else { //generate a token final Token t = generateDelegationToken( - namenode, ugi, null); + ugi, null); delegationQuery = "&" + new DelegationParam(t.encodeToUrlString()); } @@ -701,7 +714,7 @@ public class NamenodeWebHdfsMethods { validateOpParams(op, delegationTokenArgument); final Token token = new Token(); token.decodeFromUrlString(delegationTokenArgument.getValue()); - final long expiryTime = cp.renewDelegationToken(token); + final long expiryTime = renewDelegationToken(token); final String js = JsonUtil.toJsonString("long", expiryTime); return Response.ok(js).type(MediaType.APPLICATION_JSON).build(); } @@ -710,7 +723,7 @@ public class NamenodeWebHdfsMethods { validateOpParams(op, delegationTokenArgument); final Token token = new Token(); token.decodeFromUrlString(delegationTokenArgument.getValue()); - cp.cancelDelegationToken(token); + cancelDelegationToken(token); return Response.ok().type(MediaType.APPLICATION_OCTET_STREAM).build(); } case MODIFYACLENTRIES: { @@ -1120,9 +1133,8 @@ public class NamenodeWebHdfsMethods { throw new IllegalArgumentException(delegation.getName() + " parameter is not null."); } - final NameNode namenode = (NameNode)context.getAttribute("name.node"); final Token token = generateDelegationToken( - namenode, ugi, renewer.getValue()); + ugi, renewer.getValue()); final String setServiceName = tokenService.getValue(); final String setKind = tokenKind.getValue();