You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by el...@apache.org on 2016/12/19 15:24:04 UTC
[3/3] phoenix git commit: PHOENIX-3517 Switch sqlline-thin.py to use
argparse
PHOENIX-3517 Switch sqlline-thin.py to use argparse
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/42a84b33
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/42a84b33
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/42a84b33
Branch: refs/heads/4.x-HBase-0.98
Commit: 42a84b338d73ef43005df8933e812545bb6be845
Parents: d2a2241
Author: Josh Elser <el...@apache.org>
Authored: Sat Dec 3 17:33:46 2016 -0500
Committer: Josh Elser <el...@apache.org>
Committed: Mon Dec 19 10:23:20 2016 -0500
----------------------------------------------------------------------
bin/sqlline-thin.py | 49 +++++++++++++++++++++++++++++-------------------
1 file changed, 30 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/42a84b33/bin/sqlline-thin.py
----------------------------------------------------------------------
diff --git a/bin/sqlline-thin.py b/bin/sqlline-thin.py
index 12501dc..e4cb540 100755
--- a/bin/sqlline-thin.py
+++ b/bin/sqlline-thin.py
@@ -25,6 +25,7 @@ import sys
import phoenix_utils
import atexit
import urlparse
+import argparse
global childProc
childProc = None
@@ -36,10 +37,25 @@ def kill_child():
os.system("reset")
atexit.register(kill_child)
+parser = argparse.ArgumentParser(description='Launches the Apache Phoenix Thin Client.')
+# Positional argument "url" is optional
+parser.add_argument('url', nargs='?', help='The URL to the Phoenix Query Server.', default='http://localhost:8765')
+# Positional argument "sqlfile" is optional
+parser.add_argument('sqlfile', nargs='?', help='A file of SQL commands to execute.', default='')
+parser.add_argument('-u', '--user', help='Username for database authentication (unsupported).', default='none')
+parser.add_argument('-p', '--password', help='Password for database authentication (unsupported).', default='none')
+parser.add_argument('-a', '--authentication', help='Mechanism for HTTP authentication.', choices=('SPNEGO', 'BASIC', 'DIGEST', 'NONE'), default='')
+parser.add_argument('-s', '--serialization', help='Serialization type for HTTP API.', choices=('PROTOBUF', 'JSON'), default=None)
+parser.add_argument('-au', '--auth-user', help='Username for HTTP authentication.')
+parser.add_argument('-ap', '--auth-password', help='Password for HTTP authentication.')
+parser.add_argument('-v', '--verbose', help='Verbosity on sqlline.', default='true')
+parser.add_argument('-c', '--color', help='Color setting for sqlline.', default='true')
+args=parser.parse_args()
+
phoenix_utils.setPath()
-url = "localhost:8765"
-sqlfile = ""
+url = args.url
+sqlfile = args.sqlfile
serialization_key = 'phoenix.queryserver.serialization'
def usage_and_exit():
@@ -86,25 +102,12 @@ def get_serialization():
return default_serialization
return stdout
-if len(sys.argv) == 1:
- pass
-elif len(sys.argv) == 2:
- if os.path.isfile(sys.argv[1]):
- sqlfile = sys.argv[1]
- else:
- url = sys.argv[1]
-elif len(sys.argv) == 3:
- url = sys.argv[1]
- sqlfile = sys.argv[2]
-else:
- usage_and_exit()
-
url = cleanup_url(url)
if sqlfile != "":
sqlfile = "--run=" + sqlfile
-colorSetting = "true"
+colorSetting = args.color
# disable color setting for windows OS
if os.name == 'nt':
colorSetting = "false"
@@ -113,7 +116,7 @@ if os.name == 'nt':
# HBase/Phoenix client side property override
hbase_config_path = os.getenv('HBASE_CONF_DIR', phoenix_utils.current_dir)
-serialization = get_serialization()
+serialization = args.serialization if args.serialization else get_serialization()
java_home = os.getenv('JAVA_HOME')
@@ -145,13 +148,21 @@ if java_home:
else:
java = 'java'
+jdbc_url = 'jdbc:phoenix:thin:url=' + url + ';serialization=' + serialization
+if args.authentication:
+ jdbc_url += ';authentication=' + args.authentication
+if args.auth_user:
+ jdbc_url += ';avatica_user=' + args.auth_user
+if args.auth_password:
+ jdbc_url += ';avatica_password=' + args.auth_password
+
java_cmd = java + ' $PHOENIX_OPTS ' + \
' -cp "' + phoenix_utils.hbase_conf_dir + os.pathsep + phoenix_utils.phoenix_thin_client_jar + \
os.pathsep + phoenix_utils.hadoop_conf + os.pathsep + phoenix_utils.hadoop_classpath + '" -Dlog4j.configuration=file:' + \
os.path.join(phoenix_utils.current_dir, "log4j.properties") + \
" org.apache.phoenix.queryserver.client.SqllineWrapper -d org.apache.phoenix.queryserver.client.Driver " + \
- " -u \"jdbc:phoenix:thin:url=" + url + ";serialization=" + serialization + "\"" + \
- " -n none -p none --color=" + colorSetting + " --fastConnect=false --verbose=true " + \
+ ' -u "' + jdbc_url + '"' + " -n " + args.user + " -p " + args.password + \
+ " --color=" + colorSetting + " --fastConnect=false --verbose=" + args.verbose + \
" --incremental=false --isolation=TRANSACTION_READ_COMMITTED " + sqlfile
exitcode = subprocess.call(java_cmd, shell=True)