accumulo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From els...@apache.org
Subject [3/3] accumulo git commit: Merge branch '1.6'
Date Fri, 19 Dec 2014 02:38:18 GMT
Merge branch '1.6'


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/48a857eb
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/48a857eb
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/48a857eb

Branch: refs/heads/master
Commit: 48a857ebe2f4a77a1f0e1093ef7a6f78de725c7b
Parents: 195468f 27d79c2
Author: Josh Elser <elserj@apache.org>
Authored: Thu Dec 18 21:12:33 2014 -0500
Committer: Josh Elser <elserj@apache.org>
Committed: Thu Dec 18 21:37:41 2014 -0500

----------------------------------------------------------------------
 .../src/main/java/org/apache/accumulo/shell/ShellOptionsJC.java  | 4 ++++
 1 file changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/48a857eb/shell/src/main/java/org/apache/accumulo/shell/ShellOptionsJC.java
----------------------------------------------------------------------
diff --cc shell/src/main/java/org/apache/accumulo/shell/ShellOptionsJC.java
index 40d8a7e,0000000..8167ef8
mode 100644,000000..100644
--- a/shell/src/main/java/org/apache/accumulo/shell/ShellOptionsJC.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/ShellOptionsJC.java
@@@ -1,276 -1,0 +1,280 @@@
 +/*
 + * Licensed to the Apache Software Foundation (ASF) under one or more
 + * contributor license agreements.  See the NOTICE file distributed with
 + * this work for additional information regarding copyright ownership.
 + * The ASF licenses this file to You under the Apache License, Version 2.0
 + * (the "License"); you may not use this file except in compliance with
 + * the License.  You may obtain a copy of the License at
 + *
 + *     http://www.apache.org/licenses/LICENSE-2.0
 + *
 + * Unless required by applicable law or agreed to in writing, software
 + * distributed under the License is distributed on an "AS IS" BASIS,
 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 + * See the License for the specific language governing permissions and
 + * limitations under the License.
 + */
 +package org.apache.accumulo.shell;
 +
 +import java.io.File;
 +import java.io.FileNotFoundException;
 +import java.util.ArrayList;
 +import java.util.List;
 +import java.util.Map;
 +import java.util.Scanner;
 +import java.util.TreeMap;
 +
 +import com.beust.jcommander.DynamicParameter;
 +import com.beust.jcommander.IStringConverter;
 +import com.beust.jcommander.Parameter;
 +import com.beust.jcommander.ParameterException;
 +import com.beust.jcommander.converters.FileConverter;
 +import org.apache.accumulo.core.client.ClientConfiguration;
 +import org.apache.accumulo.core.client.ClientConfiguration.ClientProperty;
 +import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 +import org.apache.commons.configuration.ConfigurationException;
 +import org.apache.commons.configuration.PropertiesConfiguration;
++import org.slf4j.Logger;
++import org.slf4j.LoggerFactory;
 +
 +public class ShellOptionsJC {
++  private static final Logger log = LoggerFactory.getLogger(Shell.class);
 +
 +  @Parameter(names = {"-u", "--user"}, description = "username (defaults to your OS user)")
 +  private String username = System.getProperty("user.name", "root");
 +
 +  public static class PasswordConverter implements IStringConverter<String> {
 +    public static final String STDIN = "stdin";
 +
 +    private enum KeyType {
 +      PASS("pass:"), ENV("env:") {
 +        @Override
 +        String process(String value) {
 +          return System.getenv(value);
 +        }
 +      },
 +      FILE("file:") {
 +        @Override
 +        String process(String value) {
 +          Scanner scanner = null;
 +          try {
 +            scanner = new Scanner(new File(value));
 +            return scanner.nextLine();
 +          } catch (FileNotFoundException e) {
 +            throw new ParameterException(e);
 +          } finally {
 +            if (scanner != null) {
 +              scanner.close();
 +            }
 +          }
 +        }
 +      },
 +      STDIN(PasswordConverter.STDIN) {
 +        @Override
 +        public boolean matches(String value) {
 +          return prefix.equals(value);
 +        }
 +
 +        @Override
 +        public String convert(String value) {
 +          // Will check for this later
 +          return prefix;
 +        }
 +      };
 +
 +      String prefix;
 +
 +      private KeyType(String prefix) {
 +        this.prefix = prefix;
 +      }
 +
 +      public boolean matches(String value) {
 +        return value.startsWith(prefix);
 +      }
 +
 +      public String convert(String value) {
 +        return process(value.substring(prefix.length()));
 +      }
 +
 +      String process(String value) {
 +        return value;
 +      }
 +    };
 +
 +    @Override
 +    public String convert(String value) {
 +      for (KeyType keyType : KeyType.values()) {
 +        if (keyType.matches(value)) {
 +          return keyType.convert(value);
 +        }
 +      }
 +
 +      return value;
 +    }
 +  }
 +
 +  // Note: Don't use "password = true" because then it will prompt even if we have a token
 +  @Parameter(names = {"-p", "--password"}, description = "password (can be specified as
'pass:<password>', 'file:<local file containing the password>', "
 +      + "'env:<variable containing the pass>', or stdin)", converter = PasswordConverter.class)
 +  private String password;
 +
 +  public static class TokenConverter implements IStringConverter<AuthenticationToken>
{
 +    @Override
 +    public AuthenticationToken convert(String value) {
 +      try {
 +        return Class.forName(value).asSubclass(AuthenticationToken.class).newInstance();
 +      } catch (Exception e) {
 +        // Catching ClassNotFoundException, ClassCastException, InstantiationException and
IllegalAccessException
++        log.error("Could not instantiate AuthenticationToken " + value, e);
 +        throw new ParameterException(e);
 +      }
 +    }
 +  }
 +
 +  @Parameter(names = {"-tc", "--tokenClass"}, description = "token type to create, use the
-l to pass options", converter = TokenConverter.class)
 +  private AuthenticationToken authenticationToken;
 +
 +  @DynamicParameter(names = {"-l", "--tokenProperty"}, description = "login properties in
the format key=value. Reuse -l for each property")
 +  private Map<String,String> tokenProperties = new TreeMap<String,String>();
 +
 +  @Parameter(names = "--disable-tab-completion", description = "disables tab completion
(for less overhead when scripting)")
 +  private boolean tabCompletionDisabled;
 +
 +  @Parameter(names = "--debug", description = "enables client debugging")
 +  private boolean debugEnabled;
 +
 +  @Parameter(names = "--fake", description = "fake a connection to accumulo")
 +  private boolean fake;
 +
 +  @Parameter(names = {"-?", "--help"}, help = true, description = "display this help")
 +  private boolean helpEnabled;
 +
 +  @Parameter(names = {"-e", "--execute-command"}, description = "executes a command, and
then exits")
 +  private String execCommand;
 +
 +  @Parameter(names = {"-f", "--execute-file"}, description = "executes commands from a file
at startup", converter = FileConverter.class)
 +  private File execFile;
 +
 +  @Parameter(names = {"-fv", "--execute-file-verbose"}, description = "executes commands
from a file at startup, with commands shown",
 +      converter = FileConverter.class)
 +  private File execFileVerbose;
 +
 +  @Parameter(names = {"-h", "--hdfsZooInstance"}, description = "use hdfs zoo instance")
 +  private boolean hdfsZooInstance;
 +
 +  @Parameter(names = {"-z", "--zooKeeperInstance"}, description = "use a zookeeper instance
with the given instance name and list of zoo hosts", arity = 2)
 +  private List<String> zooKeeperInstance = new ArrayList<String>();
 +
 +  @Parameter(names = {"--ssl"}, description = "use ssl to connect to accumulo")
 +  private boolean useSsl = false;
 +
 +  @Parameter(
 +      names = "--config-file",
 +      description = "read the given client config file.  If omitted, the path searched can
be specified with $ACCUMULO_CLIENT_CONF_PATH, which defaults to ~/.accumulo/config:$ACCUMULO_CONF_DIR/client.conf:/etc/accumulo/client.conf")
 +  private String clientConfigFile = null;
 +
 +  @Parameter(names = {"-zi", "--zooKeeperInstanceName"}, description = "use a zookeeper
instance with the given instance name")
 +  private String zooKeeperInstanceName;
 +
 +  @Parameter(names = {"-zh", "--zooKeeperHosts"}, description = "use a zookeeper instance
with the given list of zoo hosts")
 +  private String zooKeeperHosts;
 +
 +  @Parameter(names = "--auth-timeout", description = "minutes the shell can be idle without
re-entering a password")
 +  private int authTimeout = 60; // TODO Add validator for positive number
 +
 +  @Parameter(names = "--disable-auth-timeout", description = "disables requiring the user
to re-type a password after being idle")
 +  private boolean authTimeoutDisabled;
 +
 +  @Parameter(hidden = true)
 +  private List<String> unrecognizedOptions;
 +
 +  public String getUsername() {
 +    return username;
 +  }
 +
 +  public String getPassword() {
 +    return password;
 +  }
 +
 +  public AuthenticationToken getAuthenticationToken() {
 +    return authenticationToken;
 +  }
 +
 +  public Map<String,String> getTokenProperties() {
 +    return tokenProperties;
 +  }
 +
 +  public boolean isTabCompletionDisabled() {
 +    return tabCompletionDisabled;
 +  }
 +
 +  public boolean isDebugEnabled() {
 +    return debugEnabled;
 +  }
 +
 +  public boolean isFake() {
 +    return fake;
 +  }
 +
 +  public boolean isHelpEnabled() {
 +    return helpEnabled;
 +  }
 +
 +  public String getExecCommand() {
 +    return execCommand;
 +  }
 +
 +  public File getExecFile() {
 +    return execFile;
 +  }
 +
 +  public File getExecFileVerbose() {
 +    return execFileVerbose;
 +  }
 +
 +  public boolean isHdfsZooInstance() {
 +    return hdfsZooInstance;
 +  }
 +
 +  public List<String> getZooKeeperInstance() {
 +    return zooKeeperInstance;
 +  }
 +
 +  public String getZooKeeperInstanceName() {
 +    return zooKeeperInstanceName;
 +  }
 +
 +  public String getZooKeeperHosts() {
 +    return zooKeeperHosts;
 +  }
 +
 +  public int getAuthTimeout() {
 +    return authTimeout;
 +  }
 +
 +  public boolean isAuthTimeoutDisabled() {
 +    return authTimeoutDisabled;
 +  }
 +
 +  public List<String> getUnrecognizedOptions() {
 +    return unrecognizedOptions;
 +  }
 +
 +  public boolean useSsl() {
 +    return useSsl;
 +  }
 +
 +  public String getClientConfigFile() {
 +    return clientConfigFile;
 +  }
 +
 +  public ClientConfiguration getClientConfiguration() throws ConfigurationException, FileNotFoundException
{
 +    ClientConfiguration clientConfig = clientConfigFile == null ? ClientConfiguration.loadDefault()
: new ClientConfiguration(new PropertiesConfiguration(
 +        getClientConfigFile()));
 +    if (useSsl()) {
 +      clientConfig.setProperty(ClientProperty.INSTANCE_RPC_SSL_ENABLED, "true");
 +    }
 +    return clientConfig;
 +  }
 +
 +}


Mime
View raw message