HDFS-14070. Refactor NameNodeWebHdfsMethods to allow better extensibility. Contributed by CR Hota
(cherry picked from commit e7b63baca1
)
This commit is contained in:
parent
1959ca6f23
commit
d72c134889
|
@ -334,9 +334,22 @@ public class NamenodeWebHdfsMethods {
|
|||
throw new IOException("No active nodes contain this block");
|
||||
}
|
||||
|
||||
private Token<? extends TokenIdentifier> generateDelegationToken(
|
||||
final NameNode namenode, final UserGroupInformation ugi,
|
||||
public long renewDelegationToken(Token<DelegationTokenIdentifier> token)
|
||||
throws IOException {
|
||||
ClientProtocol cp = getRpcClientProtocol();
|
||||
return cp.renewDelegationToken(token);
|
||||
}
|
||||
|
||||
public void cancelDelegationToken(Token<DelegationTokenIdentifier> token)
|
||||
throws IOException {
|
||||
ClientProtocol cp = getRpcClientProtocol();
|
||||
cp.cancelDelegationToken(token);
|
||||
}
|
||||
|
||||
public Token<? extends TokenIdentifier> 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) {
|
||||
|
@ -381,7 +394,7 @@ public class NamenodeWebHdfsMethods {
|
|||
} else {
|
||||
//generate a token
|
||||
final Token<? extends TokenIdentifier> t = generateDelegationToken(
|
||||
namenode, ugi, null);
|
||||
ugi, null);
|
||||
delegationQuery = "&" + new DelegationParam(t.encodeToUrlString());
|
||||
}
|
||||
|
||||
|
@ -702,7 +715,7 @@ public class NamenodeWebHdfsMethods {
|
|||
validateOpParams(op, delegationTokenArgument);
|
||||
final Token<DelegationTokenIdentifier> token = new Token<DelegationTokenIdentifier>();
|
||||
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();
|
||||
}
|
||||
|
@ -711,7 +724,7 @@ public class NamenodeWebHdfsMethods {
|
|||
validateOpParams(op, delegationTokenArgument);
|
||||
final Token<DelegationTokenIdentifier> token = new Token<DelegationTokenIdentifier>();
|
||||
token.decodeFromUrlString(delegationTokenArgument.getValue());
|
||||
cp.cancelDelegationToken(token);
|
||||
cancelDelegationToken(token);
|
||||
return Response.ok().type(MediaType.APPLICATION_OCTET_STREAM).build();
|
||||
}
|
||||
case MODIFYACLENTRIES: {
|
||||
|
@ -1123,9 +1136,8 @@ public class NamenodeWebHdfsMethods {
|
|||
throw new IllegalArgumentException(delegation.getName()
|
||||
+ " parameter is not null.");
|
||||
}
|
||||
final NameNode namenode = (NameNode)context.getAttribute("name.node");
|
||||
final Token<? extends TokenIdentifier> token = generateDelegationToken(
|
||||
namenode, ugi, renewer.getValue());
|
||||
ugi, renewer.getValue());
|
||||
|
||||
final String setServiceName = tokenService.getValue();
|
||||
final String setKind = tokenKind.getValue();
|
||||
|
|
Loading…
Reference in New Issue