HDDS-439. 'ozone oz volume create' should default to current logged in user. Contributed by Dinesh Chitlangia.

(cherry picked from commit 0bf8a110a5)
This commit is contained in:
Arpit Agarwal 2018-10-15 19:30:40 -07:00
parent 15d4e0110c
commit f30994caf0
2 changed files with 27 additions and 2 deletions

View File

@ -32,6 +32,7 @@ import java.util.List;
import java.util.Random; import java.util.Random;
import java.util.UUID; import java.util.UUID;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.RandomStringUtils;
import org.apache.hadoop.fs.FileUtil; import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.hdds.cli.MissingSubcommandException; import org.apache.hadoop.hdds.cli.MissingSubcommandException;
@ -60,6 +61,7 @@ import org.apache.hadoop.ozone.web.response.BucketInfo;
import org.apache.hadoop.ozone.web.response.KeyInfo; import org.apache.hadoop.ozone.web.response.KeyInfo;
import org.apache.hadoop.ozone.web.response.VolumeInfo; import org.apache.hadoop.ozone.web.response.VolumeInfo;
import org.apache.hadoop.ozone.web.utils.JsonUtils; import org.apache.hadoop.ozone.web.utils.JsonUtils;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.test.GenericTestUtils; import org.apache.hadoop.test.GenericTestUtils;
import org.junit.After; import org.junit.After;
import org.junit.AfterClass; import org.junit.AfterClass;
@ -258,6 +260,26 @@ public class TestOzoneShell {
exceptionHandler, args); exceptionHandler, args);
} }
/**
* Test to create volume without specifying --user or -u.
* @throws Exception
*/
@Test
public void testCreateVolumeWithoutUser() throws Exception {
String volumeName = "volume" + RandomStringUtils.randomNumeric(1);
String[] args = new String[] {"volume", "create", url + "/" + volumeName,
"--root"};
execute(shell, args);
String truncatedVolumeName =
volumeName.substring(volumeName.lastIndexOf('/') + 1);
OzoneVolume volumeInfo = client.getVolumeDetails(truncatedVolumeName);
assertEquals(truncatedVolumeName, volumeInfo.getName());
assertEquals(UserGroupInformation.getCurrentUser().getUserName(),
volumeInfo.getOwner());
}
@Test @Test
public void testDeleteVolume() throws Exception { public void testDeleteVolume() throws Exception {
LOG.info("Running testDeleteVolume"); LOG.info("Running testDeleteVolume");

View File

@ -30,6 +30,7 @@ import org.apache.hadoop.ozone.web.ozShell.Handler;
import org.apache.hadoop.ozone.web.ozShell.Shell; import org.apache.hadoop.ozone.web.ozShell.Shell;
import org.apache.hadoop.ozone.web.utils.JsonUtils; import org.apache.hadoop.ozone.web.utils.JsonUtils;
import org.apache.hadoop.security.UserGroupInformation;
import picocli.CommandLine.Command; import picocli.CommandLine.Command;
import picocli.CommandLine.Option; import picocli.CommandLine.Option;
import picocli.CommandLine.Parameters; import picocli.CommandLine.Parameters;
@ -45,8 +46,7 @@ public class CreateVolumeHandler extends Handler {
private String uri; private String uri;
@Option(names = {"--user", "-u"}, @Option(names = {"--user", "-u"},
description = "Owner of of the volume", required = description = "Owner of of the volume")
true)
private String userName; private String userName;
@Option(names = {"--quota", "-q"}, @Option(names = {"--quota", "-q"},
@ -64,6 +64,9 @@ public class CreateVolumeHandler extends Handler {
*/ */
@Override @Override
public Void call() throws Exception { public Void call() throws Exception {
if(userName == null) {
userName = UserGroupInformation.getCurrentUser().getUserName();
}
URI ozoneURI = verifyURI(uri); URI ozoneURI = verifyURI(uri);
Path path = Paths.get(ozoneURI.getPath()); Path path = Paths.get(ozoneURI.getPath());