Adding Alexander's comments
Project: http://git-wip-us.apache.org/repos/asf/sentry/repo Commit: http://git-wip-us.apache.org/repos/asf/sentry/commit/332bc1b7 Tree: http://git-wip-us.apache.org/repos/asf/sentry/tree/332bc1b7 Diff: http://git-wip-us.apache.org/repos/asf/sentry/diff/332bc1b7 Branch: refs/heads/akolb-cli Commit: 332bc1b741788992ca537a76e2d5f8b3c97b480f Parents: b882eb4 Author: Colm O hEigeartaigh <[email protected]> Authored: Wed Nov 22 15:19:04 2017 +0000 Committer: Colm O hEigeartaigh <[email protected]> Committed: Wed Nov 22 15:19:04 2017 +0000 ---------------------------------------------------------------------- bin/sentryCli | 16 +++---- .../java/org/apache/sentry/shell/SentryCli.java | 22 --------- .../org/apache/sentry/shell/TopLevelShell.java | 50 ++++++++++++-------- 3 files changed, 38 insertions(+), 50 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/sentry/blob/332bc1b7/bin/sentryCli ---------------------------------------------------------------------- diff --git a/bin/sentryCli b/bin/sentryCli index 02e9edd..2a3d906 100755 --- a/bin/sentryCli +++ b/bin/sentryCli @@ -18,39 +18,37 @@ bin=`dirname "$0"` myhome=`cd "$bin/.."; pwd` -if [[ -z $SENTRY_HOME ]] ; then - export SENTRY_HOME=$myhome -fi +export SENTRY_HOME=${SENTRY_HOME:-${myhome}} # check for hadoop in the path HADOOP_IN_PATH=`which hadoop 2>/dev/null` -if [ -f ${HADOOP_IN_PATH} ]; then +if [[ -f ${HADOOP_IN_PATH} ]]; then HADOOP_DIR=`dirname "$HADOOP_IN_PATH"`/.. fi # HADOOP_HOME env variable overrides hadoop in the path HADOOP_HOME=${HADOOP_HOME:-${HADOOP_PREFIX:-$HADOOP_DIR}} -if [ "$HADOOP_HOME" == "" ]; then +if [[ -z ${HADOOP_HOME} ]]; then echo "Cannot find hadoop installation: \$HADOOP_HOME or \$HADOOP_PREFIX must be set or hadoop must be in the path"; exit 4; fi HADOOP=$HADOOP_HOME/bin/hadoop -if [ ! -f ${HADOOP} ]; then +if [[ ! -f ${HADOOP} ]]; then echo "Cannot find hadoop installation: \$HADOOP_HOME or \$HADOOP_PREFIX must be set or hadoop must be in the path"; exit 4; fi export _CMD_JAR=${SENTRY_SHELL_JAR:-sentry-provider-db-*.jar} for f in ${SENTRY_HOME}/lib/*.jar; do - HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${f} + HADOOP_CLASSPATH+=:${f} done export HADOOP_CLASSPATH for f in ${SENTRY_HOME}/lib/server/*.jar; do - HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${f} + HADOOP_CLASSPATH+=:${f} done for f in ${SENTRY_HOME}/lib/plugins/*.jar; do - HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${f} + HADOOP_CLASSPATH+=:${f} done args=() http://git-wip-us.apache.org/repos/asf/sentry/blob/332bc1b7/sentry-tools/src/main/java/org/apache/sentry/shell/SentryCli.java ---------------------------------------------------------------------- diff --git a/sentry-tools/src/main/java/org/apache/sentry/shell/SentryCli.java b/sentry-tools/src/main/java/org/apache/sentry/shell/SentryCli.java index 75b845c..8b68d0d 100644 --- a/sentry-tools/src/main/java/org/apache/sentry/shell/SentryCli.java +++ b/sentry-tools/src/main/java/org/apache/sentry/shell/SentryCli.java @@ -27,8 +27,6 @@ import org.apache.sentry.provider.db.generic.service.thrift.SentryGenericService import org.apache.sentry.provider.db.generic.service.thrift.SentryGenericServiceClientFactory; import org.apache.sentry.provider.db.service.thrift.SentryPolicyServiceClient; import org.apache.sentry.service.thrift.SentryServiceClientFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.io.FileInputStream; import java.io.IOException; @@ -43,9 +41,7 @@ import static org.apache.sentry.service.thrift.ServiceConstants.ServerConfig.SEC * Sentry interactive tool */ public class SentryCli { - private static final Logger log = LoggerFactory.getLogger(SentryCli.class.getName()); private static final String LOG4J_CONF = "log4jConf"; - private final String[] args; private Options options = new Options(); private CommandLine cmd; @@ -92,7 +88,6 @@ public class SentryCli { * @param args command-line arguments */ public SentryCli(String[] args) { - this.args = args; options.addOption("h", "help", false, "show help"); // file path of sentry-site options.addOption("U", userOpt, true, "auth user"); @@ -112,23 +107,6 @@ public class SentryCli { } /** - * Parse command-line arguments. - */ - public void parse() { - CommandLineParser parser = new GnuParser(); - try { - cmd = parser.parse(options, args); - if (cmd.hasOption("h")) { - help(); - } - } catch (ParseException e) { - log.warn("error in parsing expression", e); - help(); - System.exit(1); - } - } - - /** * Initialize CLI */ private void init() { http://git-wip-us.apache.org/repos/asf/sentry/blob/332bc1b7/sentry-tools/src/main/java/org/apache/sentry/shell/TopLevelShell.java ---------------------------------------------------------------------- diff --git a/sentry-tools/src/main/java/org/apache/sentry/shell/TopLevelShell.java b/sentry-tools/src/main/java/org/apache/sentry/shell/TopLevelShell.java index 9cb9a53..0ddf295 100644 --- a/sentry-tools/src/main/java/org/apache/sentry/shell/TopLevelShell.java +++ b/sentry-tools/src/main/java/org/apache/sentry/shell/TopLevelShell.java @@ -46,7 +46,7 @@ import java.util.Set; */ public class TopLevelShell implements ShellDependent, Runnable { - public enum TYPE { kafka, hive, solr, sqoop }; + public enum TYPE { KAFKA, HIVE, SOLR, SQOOP }; private final Shell topShell; private ShellCommand shellCommand; @@ -227,7 +227,7 @@ public class TopLevelShell implements ShellDependent, Runnable { // Check it's a valid type first try { TYPE parsedType = TYPE.valueOf(type); - if (parsedType == TYPE.hive) { + if (parsedType == TYPE.HIVE) { shellCommand = new HiveShellCommand(sentryClient); } else { String component = getComponent(parsedType); @@ -248,8 +248,8 @@ public class TopLevelShell implements ShellDependent, Runnable { String service) { try { // Check it's a valid type first - TYPE parsedType = TYPE.valueOf(type); - if (parsedType == TYPE.hive) { + TYPE parsedType = parseType(type); + if (parsedType == TYPE.HIVE) { shellCommand = new HiveShellCommand(sentryClient); } else { String component = getComponent(parsedType); @@ -276,27 +276,39 @@ public class TopLevelShell implements ShellDependent, Runnable { } private String getComponent(TYPE type) { - if (type == TYPE.kafka) { - return AuthorizationComponent.KAFKA; - } else if (type == TYPE.solr) { - return "SOLR"; - } else if (type == TYPE.sqoop) { - return AuthorizationComponent.SQOOP; + switch (type) { + case KAFKA: + return AuthorizationComponent.KAFKA; + case SOLR: + return "SOLR"; + case SQOOP: + return AuthorizationComponent.SQOOP; + default: + throw new IllegalArgumentException("Invalid type specified for SentryShellGeneric: " + type); } - - throw new IllegalArgumentException("Invalid type specified for SentryShellGeneric: " + type); } private String getService(TYPE type) { - if (type == TYPE.kafka) { - return AuthorizationComponent.KAFKA; - } else if (type == TYPE.solr) { - return "service1"; - } else if (type == TYPE.sqoop) { - return "sqoopServer1"; + switch (type) { + case KAFKA: + return AuthorizationComponent.KAFKA; + case SOLR: + return "service1"; + case SQOOP: + return "sqoopServer1"; + default: + throw new IllegalArgumentException("Invalid type specified for SentryShellGeneric: " + type); + } + } + + private TYPE parseType(String typeStr) { + for (TYPE type : TYPE.values()) { + if (type.name().equalsIgnoreCase(typeStr)) { + return type; + } } - throw new IllegalArgumentException("Invalid type specified for SentryShellGeneric: " + type); + throw new IllegalArgumentException("Invalid type specified for SentryShellGeneric: " + typeStr); } }
