HADOOP-15150. in FsShell, UGI params should be overidden through env vars(-D arg). Contributed by Brahma Reddy Battula.

(cherry picked from commit 08332e12d0)
This commit is contained in:
Brahma Reddy Battula 2018-01-18 10:54:32 +05:30
parent c614a39e9f
commit 3cdc392150
2 changed files with 16 additions and 0 deletions

View File

@ -30,6 +30,7 @@ import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.shell.Command;
import org.apache.hadoop.fs.shell.CommandFactory;
import org.apache.hadoop.fs.shell.FsCommand;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.tools.TableListing;
import org.apache.hadoop.tracing.TraceUtils;
import org.apache.hadoop.util.StringUtils;
@ -92,6 +93,7 @@ public class FsShell extends Configured implements Tool {
protected void init() throws IOException {
getConf().setQuietMode(true);
UserGroupInformation.setConfiguration(getConf());
if (commandFactory == null) {
commandFactory = new CommandFactory(getConf());
commandFactory.addObject(new Help(), "-help");

View File

@ -75,4 +75,18 @@ public class TestFsShellList {
lsArgv = new String[]{"-ls", "-q", testRootDir.toString()};
assertThat(shell.run(lsArgv), is(0));
}
/*
UGI params should take effect when we pass.
*/
@Test(expected = IllegalArgumentException.class)
public void testListWithUGI() throws Exception {
FsShell fsShell = new FsShell(new Configuration());
//Passing Dummy such that it should through IAE
fsShell.getConf()
.set(CommonConfigurationKeysPublic.HADOOP_SECURITY_AUTHENTICATION,
"DUMMYAUTH");
String[] lsArgv = new String[] {"-ls", testRootDir.toString()};
fsShell.run(lsArgv);
}
}