#!/usr/bin/env python
#
# Autogenerated by Thrift Compiler (0.9.0)
#
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
#
#  options string: py
#

import sys
import pprint
from urlparse import urlparse
from thrift.transport import TTransport
from thrift.transport import TSocket
from thrift.transport import THttpClient
from thrift.protocol import TBinaryProtocol

import ThriftHiveMetastore
from ttypes import *

if len(sys.argv) <= 1 or sys.argv[1] == '--help':
  print ''
  print 'Usage: ' + sys.argv[0] + ' [-h host[:port]] [-u url] [-f[ramed]] function [arg1 [arg2...]]'
  print ''
  print 'Functions:'
  print '  string getMetaConf(string key)'
  print '  void setMetaConf(string key, string value)'
  print '  void create_database(Database database)'
  print '  Database get_database(string name)'
  print '  void drop_database(string name, bool deleteData, bool cascade)'
  print '   get_databases(string pattern)'
  print '   get_all_databases()'
  print '  void alter_database(string dbname, Database db)'
  print '  Type get_type(string name)'
  print '  bool create_type(Type type)'
  print '  bool drop_type(string type)'
  print '   get_type_all(string name)'
  print '   get_fields(string db_name, string table_name)'
  print '   get_fields_with_environment_context(string db_name, string table_name, EnvironmentContext environment_context)'
  print '   get_schema(string db_name, string table_name)'
  print '   get_schema_with_environment_context(string db_name, string table_name, EnvironmentContext environment_context)'
  print '  void create_table(Table tbl)'
  print '  void create_table_with_environment_context(Table tbl, EnvironmentContext environment_context)'
  print '  void drop_table(string dbname, string name, bool deleteData)'
  print '  void drop_table_with_environment_context(string dbname, string name, bool deleteData, EnvironmentContext environment_context)'
  print '   get_tables(string db_name, string pattern)'
  print '   get_all_tables(string db_name)'
  print '  Table get_table(string dbname, string tbl_name)'
  print '   get_table_objects_by_name(string dbname,  tbl_names)'
  print '   get_table_names_by_filter(string dbname, string filter, i16 max_tables)'
  print '  void alter_table(string dbname, string tbl_name, Table new_tbl)'
  print '  void alter_table_with_environment_context(string dbname, string tbl_name, Table new_tbl, EnvironmentContext environment_context)'
  print '  void alter_table_with_cascade(string dbname, string tbl_name, Table new_tbl, bool cascade)'
  print '  Partition add_partition(Partition new_part)'
  print '  Partition add_partition_with_environment_context(Partition new_part, EnvironmentContext environment_context)'
  print '  i32 add_partitions( new_parts)'
  print '  i32 add_partitions_pspec( new_parts)'
  print '  Partition append_partition(string db_name, string tbl_name,  part_vals)'
  print '  AddPartitionsResult add_partitions_req(AddPartitionsRequest request)'
  print '  Partition append_partition_with_environment_context(string db_name, string tbl_name,  part_vals, EnvironmentContext environment_context)'
  print '  Partition append_partition_by_name(string db_name, string tbl_name, string part_name)'
  print '  Partition append_partition_by_name_with_environment_context(string db_name, string tbl_name, string part_name, EnvironmentContext environment_context)'
  print '  bool drop_partition(string db_name, string tbl_name,  part_vals, bool deleteData)'
  print '  bool drop_partition_with_environment_context(string db_name, string tbl_name,  part_vals, bool deleteData, EnvironmentContext environment_context)'
  print '  bool drop_partition_by_name(string db_name, string tbl_name, string part_name, bool deleteData)'
  print '  bool drop_partition_by_name_with_environment_context(string db_name, string tbl_name, string part_name, bool deleteData, EnvironmentContext environment_context)'
  print '  DropPartitionsResult drop_partitions_req(DropPartitionsRequest req)'
  print '  Partition get_partition(string db_name, string tbl_name,  part_vals)'
  print '  Partition exchange_partition( partitionSpecs, string source_db, string source_table_name, string dest_db, string dest_table_name)'
  print '  Partition get_partition_with_auth(string db_name, string tbl_name,  part_vals, string user_name,  group_names)'
  print '  Partition get_partition_by_name(string db_name, string tbl_name, string part_name)'
  print '   get_partitions(string db_name, string tbl_name, i16 max_parts)'
  print '   get_partitions_with_auth(string db_name, string tbl_name, i16 max_parts, string user_name,  group_names)'
  print '   get_partitions_pspec(string db_name, string tbl_name, i32 max_parts)'
  print '   get_partition_names(string db_name, string tbl_name, i16 max_parts)'
  print '   get_partitions_ps(string db_name, string tbl_name,  part_vals, i16 max_parts)'
  print '   get_partitions_ps_with_auth(string db_name, string tbl_name,  part_vals, i16 max_parts, string user_name,  group_names)'
  print '   get_partition_names_ps(string db_name, string tbl_name,  part_vals, i16 max_parts)'
  print '   get_partitions_by_filter(string db_name, string tbl_name, string filter, i16 max_parts)'
  print '   get_part_specs_by_filter(string db_name, string tbl_name, string filter, i32 max_parts)'
  print '  PartitionsByExprResult get_partitions_by_expr(PartitionsByExprRequest req)'
  print '   get_partitions_by_names(string db_name, string tbl_name,  names)'
  print '  void alter_partition(string db_name, string tbl_name, Partition new_part)'
  print '  void alter_partitions(string db_name, string tbl_name,  new_parts)'
  print '  void alter_partition_with_environment_context(string db_name, string tbl_name, Partition new_part, EnvironmentContext environment_context)'
  print '  void rename_partition(string db_name, string tbl_name,  part_vals, Partition new_part)'
  print '  bool partition_name_has_valid_characters( part_vals, bool throw_exception)'
  print '  string get_config_value(string name, string defaultValue)'
  print '   partition_name_to_vals(string part_name)'
  print '   partition_name_to_spec(string part_name)'
  print '  void markPartitionForEvent(string db_name, string tbl_name,  part_vals, PartitionEventType eventType)'
  print '  bool isPartitionMarkedForEvent(string db_name, string tbl_name,  part_vals, PartitionEventType eventType)'
  print '  Index add_index(Index new_index, Table index_table)'
  print '  void alter_index(string dbname, string base_tbl_name, string idx_name, Index new_idx)'
  print '  bool drop_index_by_name(string db_name, string tbl_name, string index_name, bool deleteData)'
  print '  Index get_index_by_name(string db_name, string tbl_name, string index_name)'
  print '   get_indexes(string db_name, string tbl_name, i16 max_indexes)'
  print '   get_index_names(string db_name, string tbl_name, i16 max_indexes)'
  print '  bool update_table_column_statistics(ColumnStatistics stats_obj)'
  print '  bool update_partition_column_statistics(ColumnStatistics stats_obj)'
  print '  ColumnStatistics get_table_column_statistics(string db_name, string tbl_name, string col_name)'
  print '  ColumnStatistics get_partition_column_statistics(string db_name, string tbl_name, string part_name, string col_name)'
  print '  TableStatsResult get_table_statistics_req(TableStatsRequest request)'
  print '  PartitionsStatsResult get_partitions_statistics_req(PartitionsStatsRequest request)'
  print '  AggrStats get_aggr_stats_for(PartitionsStatsRequest request)'
  print '  bool set_aggr_stats_for(SetPartitionsStatsRequest request)'
  print '  bool delete_partition_column_statistics(string db_name, string tbl_name, string part_name, string col_name)'
  print '  bool delete_table_column_statistics(string db_name, string tbl_name, string col_name)'
  print '  void create_function(Function func)'
  print '  void drop_function(string dbName, string funcName)'
  print '  void alter_function(string dbName, string funcName, Function newFunc)'
  print '   get_functions(string dbName, string pattern)'
  print '  Function get_function(string dbName, string funcName)'
  print '  bool create_role(Role role)'
  print '  bool drop_role(string role_name)'
  print '   get_role_names()'
  print '  bool grant_role(string role_name, string principal_name, PrincipalType principal_type, string grantor, PrincipalType grantorType, bool grant_option)'
  print '  bool revoke_role(string role_name, string principal_name, PrincipalType principal_type)'
  print '   list_roles(string principal_name, PrincipalType principal_type)'
  print '  GrantRevokeRoleResponse grant_revoke_role(GrantRevokeRoleRequest request)'
  print '  GetPrincipalsInRoleResponse get_principals_in_role(GetPrincipalsInRoleRequest request)'
  print '  GetRoleGrantsForPrincipalResponse get_role_grants_for_principal(GetRoleGrantsForPrincipalRequest request)'
  print '  PrincipalPrivilegeSet get_privilege_set(HiveObjectRef hiveObject, string user_name,  group_names)'
  print '   list_privileges(string principal_name, PrincipalType principal_type, HiveObjectRef hiveObject)'
  print '  bool grant_privileges(PrivilegeBag privileges)'
  print '  bool revoke_privileges(PrivilegeBag privileges)'
  print '  GrantRevokePrivilegeResponse grant_revoke_privileges(GrantRevokePrivilegeRequest request)'
  print '   set_ugi(string user_name,  group_names)'
  print '  string get_delegation_token(string token_owner, string renewer_kerberos_principal_name)'
  print '  i64 renew_delegation_token(string token_str_form)'
  print '  void cancel_delegation_token(string token_str_form)'
  print '  GetOpenTxnsResponse get_open_txns()'
  print '  GetOpenTxnsInfoResponse get_open_txns_info()'
  print '  OpenTxnsResponse open_txns(OpenTxnRequest rqst)'
  print '  void abort_txn(AbortTxnRequest rqst)'
  print '  void commit_txn(CommitTxnRequest rqst)'
  print '  LockResponse lock(LockRequest rqst)'
  print '  LockResponse check_lock(CheckLockRequest rqst)'
  print '  void unlock(UnlockRequest rqst)'
  print '  ShowLocksResponse show_locks(ShowLocksRequest rqst)'
  print '  void heartbeat(HeartbeatRequest ids)'
  print '  HeartbeatTxnRangeResponse heartbeat_txn_range(HeartbeatTxnRangeRequest txns)'
  print '  void compact(CompactionRequest rqst)'
  print '  ShowCompactResponse show_compact(ShowCompactRequest rqst)'
  print '  void add_dynamic_partitions(AddDynamicPartitions rqst)'
  print '  NotificationEventResponse get_next_notification(NotificationEventRequest rqst)'
  print '  CurrentNotificationEventId get_current_notificationEventId()'
  print '  FireEventResponse fire_listener_event(FireEventRequest rqst)'
  print ''
  sys.exit(0)

pp = pprint.PrettyPrinter(indent = 2)
host = 'localhost'
port = 9090
uri = ''
framed = False
http = False
argi = 1

if sys.argv[argi] == '-h':
  parts = sys.argv[argi+1].split(':')
  host = parts[0]
  if len(parts) > 1:
    port = int(parts[1])
  argi += 2

if sys.argv[argi] == '-u':
  url = urlparse(sys.argv[argi+1])
  parts = url[1].split(':')
  host = parts[0]
  if len(parts) > 1:
    port = int(parts[1])
  else:
    port = 80
  uri = url[2]
  if url[4]:
    uri += '?%s' % url[4]
  http = True
  argi += 2

if sys.argv[argi] == '-f' or sys.argv[argi] == '-framed':
  framed = True
  argi += 1

cmd = sys.argv[argi]
args = sys.argv[argi+1:]

if http:
  transport = THttpClient.THttpClient(host, port, uri)
else:
  socket = TSocket.TSocket(host, port)
  if framed:
    transport = TTransport.TFramedTransport(socket)
  else:
    transport = TTransport.TBufferedTransport(socket)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = ThriftHiveMetastore.Client(protocol)
transport.open()

if cmd == 'getMetaConf':
  if len(args) != 1:
    print 'getMetaConf requires 1 args'
    sys.exit(1)
  pp.pprint(client.getMetaConf(args[0],))

elif cmd == 'setMetaConf':
  if len(args) != 2:
    print 'setMetaConf requires 2 args'
    sys.exit(1)
  pp.pprint(client.setMetaConf(args[0],args[1],))

elif cmd == 'create_database':
  if len(args) != 1:
    print 'create_database requires 1 args'
    sys.exit(1)
  pp.pprint(client.create_database(eval(args[0]),))

elif cmd == 'get_database':
  if len(args) != 1:
    print 'get_database requires 1 args'
    sys.exit(1)
  pp.pprint(client.get_database(args[0],))

elif cmd == 'drop_database':
  if len(args) != 3:
    print 'drop_database requires 3 args'
    sys.exit(1)
  pp.pprint(client.drop_database(args[0],eval(args[1]),eval(args[2]),))

elif cmd == 'get_databases':
  if len(args) != 1:
    print 'get_databases requires 1 args'
    sys.exit(1)
  pp.pprint(client.get_databases(args[0],))

elif cmd == 'get_all_databases':
  if len(args) != 0:
    print 'get_all_databases requires 0 args'
    sys.exit(1)
  pp.pprint(client.get_all_databases())

elif cmd == 'alter_database':
  if len(args) != 2:
    print 'alter_database requires 2 args'
    sys.exit(1)
  pp.pprint(client.alter_database(args[0],eval(args[1]),))

elif cmd == 'get_type':
  if len(args) != 1:
    print 'get_type requires 1 args'
    sys.exit(1)
  pp.pprint(client.get_type(args[0],))

elif cmd == 'create_type':
  if len(args) != 1:
    print 'create_type requires 1 args'
    sys.exit(1)
  pp.pprint(client.create_type(eval(args[0]),))

elif cmd == 'drop_type':
  if len(args) != 1:
    print 'drop_type requires 1 args'
    sys.exit(1)
  pp.pprint(client.drop_type(args[0],))

elif cmd == 'get_type_all':
  if len(args) != 1:
    print 'get_type_all requires 1 args'
    sys.exit(1)
  pp.pprint(client.get_type_all(args[0],))

elif cmd == 'get_fields':
  if len(args) != 2:
    print 'get_fields requires 2 args'
    sys.exit(1)
  pp.pprint(client.get_fields(args[0],args[1],))

elif cmd == 'get_fields_with_environment_context':
  if len(args) != 3:
    print 'get_fields_with_environment_context requires 3 args'
    sys.exit(1)
  pp.pprint(client.get_fields_with_environment_context(args[0],args[1],eval(args[2]),))

elif cmd == 'get_schema':
  if len(args) != 2:
    print 'get_schema requires 2 args'
    sys.exit(1)
  pp.pprint(client.get_schema(args[0],args[1],))

elif cmd == 'get_schema_with_environment_context':
  if len(args) != 3:
    print 'get_schema_with_environment_context requires 3 args'
    sys.exit(1)
  pp.pprint(client.get_schema_with_environment_context(args[0],args[1],eval(args[2]),))

elif cmd == 'create_table':
  if len(args) != 1:
    print 'create_table requires 1 args'
    sys.exit(1)
  pp.pprint(client.create_table(eval(args[0]),))

elif cmd == 'create_table_with_environment_context':
  if len(args) != 2:
    print 'create_table_with_environment_context requires 2 args'
    sys.exit(1)
  pp.pprint(client.create_table_with_environment_context(eval(args[0]),eval(args[1]),))

elif cmd == 'drop_table':
  if len(args) != 3:
    print 'drop_table requires 3 args'
    sys.exit(1)
  pp.pprint(client.drop_table(args[0],args[1],eval(args[2]),))

elif cmd == 'drop_table_with_environment_context':
  if len(args) != 4:
    print 'drop_table_with_environment_context requires 4 args'
    sys.exit(1)
  pp.pprint(client.drop_table_with_environment_context(args[0],args[1],eval(args[2]),eval(args[3]),))

elif cmd == 'get_tables':
  if len(args) != 2:
    print 'get_tables requires 2 args'
    sys.exit(1)
  pp.pprint(client.get_tables(args[0],args[1],))

elif cmd == 'get_all_tables':
  if len(args) != 1:
    print 'get_all_tables requires 1 args'
    sys.exit(1)
  pp.pprint(client.get_all_tables(args[0],))

elif cmd == 'get_table':
  if len(args) != 2:
    print 'get_table requires 2 args'
    sys.exit(1)
  pp.pprint(client.get_table(args[0],args[1],))

elif cmd == 'get_table_objects_by_name':
  if len(args) != 2:
    print 'get_table_objects_by_name requires 2 args'
    sys.exit(1)
  pp.pprint(client.get_table_objects_by_name(args[0],eval(args[1]),))

elif cmd == 'get_table_names_by_filter':
  if len(args) != 3:
    print 'get_table_names_by_filter requires 3 args'
    sys.exit(1)
  pp.pprint(client.get_table_names_by_filter(args[0],args[1],eval(args[2]),))

elif cmd == 'alter_table':
  if len(args) != 3:
    print 'alter_table requires 3 args'
    sys.exit(1)
  pp.pprint(client.alter_table(args[0],args[1],eval(args[2]),))

elif cmd == 'alter_table_with_environment_context':
  if len(args) != 4:
    print 'alter_table_with_environment_context requires 4 args'
    sys.exit(1)
  pp.pprint(client.alter_table_with_environment_context(args[0],args[1],eval(args[2]),eval(args[3]),))

elif cmd == 'alter_table_with_cascade':
  if len(args) != 4:
    print 'alter_table_with_cascade requires 4 args'
    sys.exit(1)
  pp.pprint(client.alter_table_with_cascade(args[0],args[1],eval(args[2]),eval(args[3]),))

elif cmd == 'add_partition':
  if len(args) != 1:
    print 'add_partition requires 1 args'
    sys.exit(1)
  pp.pprint(client.add_partition(eval(args[0]),))

elif cmd == 'add_partition_with_environment_context':
  if len(args) != 2:
    print 'add_partition_with_environment_context requires 2 args'
    sys.exit(1)
  pp.pprint(client.add_partition_with_environment_context(eval(args[0]),eval(args[1]),))

elif cmd == 'add_partitions':
  if len(args) != 1:
    print 'add_partitions requires 1 args'
    sys.exit(1)
  pp.pprint(client.add_partitions(eval(args[0]),))

elif cmd == 'add_partitions_pspec':
  if len(args) != 1:
    print 'add_partitions_pspec requires 1 args'
    sys.exit(1)
  pp.pprint(client.add_partitions_pspec(eval(args[0]),))

elif cmd == 'append_partition':
  if len(args) != 3:
    print 'append_partition requires 3 args'
    sys.exit(1)
  pp.pprint(client.append_partition(args[0],args[1],eval(args[2]),))

elif cmd == 'add_partitions_req':
  if len(args) != 1:
    print 'add_partitions_req requires 1 args'
    sys.exit(1)
  pp.pprint(client.add_partitions_req(eval(args[0]),))

elif cmd == 'append_partition_with_environment_context':
  if len(args) != 4:
    print 'append_partition_with_environment_context requires 4 args'
    sys.exit(1)
  pp.pprint(client.append_partition_with_environment_context(args[0],args[1],eval(args[2]),eval(args[3]),))

elif cmd == 'append_partition_by_name':
  if len(args) != 3:
    print 'append_partition_by_name requires 3 args'
    sys.exit(1)
  pp.pprint(client.append_partition_by_name(args[0],args[1],args[2],))

elif cmd == 'append_partition_by_name_with_environment_context':
  if len(args) != 4:
    print 'append_partition_by_name_with_environment_context requires 4 args'
    sys.exit(1)
  pp.pprint(client.append_partition_by_name_with_environment_context(args[0],args[1],args[2],eval(args[3]),))

elif cmd == 'drop_partition':
  if len(args) != 4:
    print 'drop_partition requires 4 args'
    sys.exit(1)
  pp.pprint(client.drop_partition(args[0],args[1],eval(args[2]),eval(args[3]),))

elif cmd == 'drop_partition_with_environment_context':
  if len(args) != 5:
    print 'drop_partition_with_environment_context requires 5 args'
    sys.exit(1)
  pp.pprint(client.drop_partition_with_environment_context(args[0],args[1],eval(args[2]),eval(args[3]),eval(args[4]),))

elif cmd == 'drop_partition_by_name':
  if len(args) != 4:
    print 'drop_partition_by_name requires 4 args'
    sys.exit(1)
  pp.pprint(client.drop_partition_by_name(args[0],args[1],args[2],eval(args[3]),))

elif cmd == 'drop_partition_by_name_with_environment_context':
  if len(args) != 5:
    print 'drop_partition_by_name_with_environment_context requires 5 args'
    sys.exit(1)
  pp.pprint(client.drop_partition_by_name_with_environment_context(args[0],args[1],args[2],eval(args[3]),eval(args[4]),))

elif cmd == 'drop_partitions_req':
  if len(args) != 1:
    print 'drop_partitions_req requires 1 args'
    sys.exit(1)
  pp.pprint(client.drop_partitions_req(eval(args[0]),))

elif cmd == 'get_partition':
  if len(args) != 3:
    print 'get_partition requires 3 args'
    sys.exit(1)
  pp.pprint(client.get_partition(args[0],args[1],eval(args[2]),))

elif cmd == 'exchange_partition':
  if len(args) != 5:
    print 'exchange_partition requires 5 args'
    sys.exit(1)
  pp.pprint(client.exchange_partition(eval(args[0]),args[1],args[2],args[3],args[4],))

elif cmd == 'get_partition_with_auth':
  if len(args) != 5:
    print 'get_partition_with_auth requires 5 args'
    sys.exit(1)
  pp.pprint(client.get_partition_with_auth(args[0],args[1],eval(args[2]),args[3],eval(args[4]),))

elif cmd == 'get_partition_by_name':
  if len(args) != 3:
    print 'get_partition_by_name requires 3 args'
    sys.exit(1)
  pp.pprint(client.get_partition_by_name(args[0],args[1],args[2],))

elif cmd == 'get_partitions':
  if len(args) != 3:
    print 'get_partitions requires 3 args'
    sys.exit(1)
  pp.pprint(client.get_partitions(args[0],args[1],eval(args[2]),))

elif cmd == 'get_partitions_with_auth':
  if len(args) != 5:
    print 'get_partitions_with_auth requires 5 args'
    sys.exit(1)
  pp.pprint(client.get_partitions_with_auth(args[0],args[1],eval(args[2]),args[3],eval(args[4]),))

elif cmd == 'get_partitions_pspec':
  if len(args) != 3:
    print 'get_partitions_pspec requires 3 args'
    sys.exit(1)
  pp.pprint(client.get_partitions_pspec(args[0],args[1],eval(args[2]),))

elif cmd == 'get_partition_names':
  if len(args) != 3:
    print 'get_partition_names requires 3 args'
    sys.exit(1)
  pp.pprint(client.get_partition_names(args[0],args[1],eval(args[2]),))

elif cmd == 'get_partitions_ps':
  if len(args) != 4:
    print 'get_partitions_ps requires 4 args'
    sys.exit(1)
  pp.pprint(client.get_partitions_ps(args[0],args[1],eval(args[2]),eval(args[3]),))

elif cmd == 'get_partitions_ps_with_auth':
  if len(args) != 6:
    print 'get_partitions_ps_with_auth requires 6 args'
    sys.exit(1)
  pp.pprint(client.get_partitions_ps_with_auth(args[0],args[1],eval(args[2]),eval(args[3]),args[4],eval(args[5]),))

elif cmd == 'get_partition_names_ps':
  if len(args) != 4:
    print 'get_partition_names_ps requires 4 args'
    sys.exit(1)
  pp.pprint(client.get_partition_names_ps(args[0],args[1],eval(args[2]),eval(args[3]),))

elif cmd == 'get_partitions_by_filter':
  if len(args) != 4:
    print 'get_partitions_by_filter requires 4 args'
    sys.exit(1)
  pp.pprint(client.get_partitions_by_filter(args[0],args[1],args[2],eval(args[3]),))

elif cmd == 'get_part_specs_by_filter':
  if len(args) != 4:
    print 'get_part_specs_by_filter requires 4 args'
    sys.exit(1)
  pp.pprint(client.get_part_specs_by_filter(args[0],args[1],args[2],eval(args[3]),))

elif cmd == 'get_partitions_by_expr':
  if len(args) != 1:
    print 'get_partitions_by_expr requires 1 args'
    sys.exit(1)
  pp.pprint(client.get_partitions_by_expr(eval(args[0]),))

elif cmd == 'get_partitions_by_names':
  if len(args) != 3:
    print 'get_partitions_by_names requires 3 args'
    sys.exit(1)
  pp.pprint(client.get_partitions_by_names(args[0],args[1],eval(args[2]),))

elif cmd == 'alter_partition':
  if len(args) != 3:
    print 'alter_partition requires 3 args'
    sys.exit(1)
  pp.pprint(client.alter_partition(args[0],args[1],eval(args[2]),))

elif cmd == 'alter_partitions':
  if len(args) != 3:
    print 'alter_partitions requires 3 args'
    sys.exit(1)
  pp.pprint(client.alter_partitions(args[0],args[1],eval(args[2]),))

elif cmd == 'alter_partition_with_environment_context':
  if len(args) != 4:
    print 'alter_partition_with_environment_context requires 4 args'
    sys.exit(1)
  pp.pprint(client.alter_partition_with_environment_context(args[0],args[1],eval(args[2]),eval(args[3]),))

elif cmd == 'rename_partition':
  if len(args) != 4:
    print 'rename_partition requires 4 args'
    sys.exit(1)
  pp.pprint(client.rename_partition(args[0],args[1],eval(args[2]),eval(args[3]),))

elif cmd == 'partition_name_has_valid_characters':
  if len(args) != 2:
    print 'partition_name_has_valid_characters requires 2 args'
    sys.exit(1)
  pp.pprint(client.partition_name_has_valid_characters(eval(args[0]),eval(args[1]),))

elif cmd == 'get_config_value':
  if len(args) != 2:
    print 'get_config_value requires 2 args'
    sys.exit(1)
  pp.pprint(client.get_config_value(args[0],args[1],))

elif cmd == 'partition_name_to_vals':
  if len(args) != 1:
    print 'partition_name_to_vals requires 1 args'
    sys.exit(1)
  pp.pprint(client.partition_name_to_vals(args[0],))

elif cmd == 'partition_name_to_spec':
  if len(args) != 1:
    print 'partition_name_to_spec requires 1 args'
    sys.exit(1)
  pp.pprint(client.partition_name_to_spec(args[0],))

elif cmd == 'markPartitionForEvent':
  if len(args) != 4:
    print 'markPartitionForEvent requires 4 args'
    sys.exit(1)
  pp.pprint(client.markPartitionForEvent(args[0],args[1],eval(args[2]),eval(args[3]),))

elif cmd == 'isPartitionMarkedForEvent':
  if len(args) != 4:
    print 'isPartitionMarkedForEvent requires 4 args'
    sys.exit(1)
  pp.pprint(client.isPartitionMarkedForEvent(args[0],args[1],eval(args[2]),eval(args[3]),))

elif cmd == 'add_index':
  if len(args) != 2:
    print 'add_index requires 2 args'
    sys.exit(1)
  pp.pprint(client.add_index(eval(args[0]),eval(args[1]),))

elif cmd == 'alter_index':
  if len(args) != 4:
    print 'alter_index requires 4 args'
    sys.exit(1)
  pp.pprint(client.alter_index(args[0],args[1],args[2],eval(args[3]),))

elif cmd == 'drop_index_by_name':
  if len(args) != 4:
    print 'drop_index_by_name requires 4 args'
    sys.exit(1)
  pp.pprint(client.drop_index_by_name(args[0],args[1],args[2],eval(args[3]),))

elif cmd == 'get_index_by_name':
  if len(args) != 3:
    print 'get_index_by_name requires 3 args'
    sys.exit(1)
  pp.pprint(client.get_index_by_name(args[0],args[1],args[2],))

elif cmd == 'get_indexes':
  if len(args) != 3:
    print 'get_indexes requires 3 args'
    sys.exit(1)
  pp.pprint(client.get_indexes(args[0],args[1],eval(args[2]),))

elif cmd == 'get_index_names':
  if len(args) != 3:
    print 'get_index_names requires 3 args'
    sys.exit(1)
  pp.pprint(client.get_index_names(args[0],args[1],eval(args[2]),))

elif cmd == 'update_table_column_statistics':
  if len(args) != 1:
    print 'update_table_column_statistics requires 1 args'
    sys.exit(1)
  pp.pprint(client.update_table_column_statistics(eval(args[0]),))

elif cmd == 'update_partition_column_statistics':
  if len(args) != 1:
    print 'update_partition_column_statistics requires 1 args'
    sys.exit(1)
  pp.pprint(client.update_partition_column_statistics(eval(args[0]),))

elif cmd == 'get_table_column_statistics':
  if len(args) != 3:
    print 'get_table_column_statistics requires 3 args'
    sys.exit(1)
  pp.pprint(client.get_table_column_statistics(args[0],args[1],args[2],))

elif cmd == 'get_partition_column_statistics':
  if len(args) != 4:
    print 'get_partition_column_statistics requires 4 args'
    sys.exit(1)
  pp.pprint(client.get_partition_column_statistics(args[0],args[1],args[2],args[3],))

elif cmd == 'get_table_statistics_req':
  if len(args) != 1:
    print 'get_table_statistics_req requires 1 args'
    sys.exit(1)
  pp.pprint(client.get_table_statistics_req(eval(args[0]),))

elif cmd == 'get_partitions_statistics_req':
  if len(args) != 1:
    print 'get_partitions_statistics_req requires 1 args'
    sys.exit(1)
  pp.pprint(client.get_partitions_statistics_req(eval(args[0]),))

elif cmd == 'get_aggr_stats_for':
  if len(args) != 1:
    print 'get_aggr_stats_for requires 1 args'
    sys.exit(1)
  pp.pprint(client.get_aggr_stats_for(eval(args[0]),))

elif cmd == 'set_aggr_stats_for':
  if len(args) != 1:
    print 'set_aggr_stats_for requires 1 args'
    sys.exit(1)
  pp.pprint(client.set_aggr_stats_for(eval(args[0]),))

elif cmd == 'delete_partition_column_statistics':
  if len(args) != 4:
    print 'delete_partition_column_statistics requires 4 args'
    sys.exit(1)
  pp.pprint(client.delete_partition_column_statistics(args[0],args[1],args[2],args[3],))

elif cmd == 'delete_table_column_statistics':
  if len(args) != 3:
    print 'delete_table_column_statistics requires 3 args'
    sys.exit(1)
  pp.pprint(client.delete_table_column_statistics(args[0],args[1],args[2],))

elif cmd == 'create_function':
  if len(args) != 1:
    print 'create_function requires 1 args'
    sys.exit(1)
  pp.pprint(client.create_function(eval(args[0]),))

elif cmd == 'drop_function':
  if len(args) != 2:
    print 'drop_function requires 2 args'
    sys.exit(1)
  pp.pprint(client.drop_function(args[0],args[1],))

elif cmd == 'alter_function':
  if len(args) != 3:
    print 'alter_function requires 3 args'
    sys.exit(1)
  pp.pprint(client.alter_function(args[0],args[1],eval(args[2]),))

elif cmd == 'get_functions':
  if len(args) != 2:
    print 'get_functions requires 2 args'
    sys.exit(1)
  pp.pprint(client.get_functions(args[0],args[1],))

elif cmd == 'get_function':
  if len(args) != 2:
    print 'get_function requires 2 args'
    sys.exit(1)
  pp.pprint(client.get_function(args[0],args[1],))

elif cmd == 'create_role':
  if len(args) != 1:
    print 'create_role requires 1 args'
    sys.exit(1)
  pp.pprint(client.create_role(eval(args[0]),))

elif cmd == 'drop_role':
  if len(args) != 1:
    print 'drop_role requires 1 args'
    sys.exit(1)
  pp.pprint(client.drop_role(args[0],))

elif cmd == 'get_role_names':
  if len(args) != 0:
    print 'get_role_names requires 0 args'
    sys.exit(1)
  pp.pprint(client.get_role_names())

elif cmd == 'grant_role':
  if len(args) != 6:
    print 'grant_role requires 6 args'
    sys.exit(1)
  pp.pprint(client.grant_role(args[0],args[1],eval(args[2]),args[3],eval(args[4]),eval(args[5]),))

elif cmd == 'revoke_role':
  if len(args) != 3:
    print 'revoke_role requires 3 args'
    sys.exit(1)
  pp.pprint(client.revoke_role(args[0],args[1],eval(args[2]),))

elif cmd == 'list_roles':
  if len(args) != 2:
    print 'list_roles requires 2 args'
    sys.exit(1)
  pp.pprint(client.list_roles(args[0],eval(args[1]),))

elif cmd == 'grant_revoke_role':
  if len(args) != 1:
    print 'grant_revoke_role requires 1 args'
    sys.exit(1)
  pp.pprint(client.grant_revoke_role(eval(args[0]),))

elif cmd == 'get_principals_in_role':
  if len(args) != 1:
    print 'get_principals_in_role requires 1 args'
    sys.exit(1)
  pp.pprint(client.get_principals_in_role(eval(args[0]),))

elif cmd == 'get_role_grants_for_principal':
  if len(args) != 1:
    print 'get_role_grants_for_principal requires 1 args'
    sys.exit(1)
  pp.pprint(client.get_role_grants_for_principal(eval(args[0]),))

elif cmd == 'get_privilege_set':
  if len(args) != 3:
    print 'get_privilege_set requires 3 args'
    sys.exit(1)
  pp.pprint(client.get_privilege_set(eval(args[0]),args[1],eval(args[2]),))

elif cmd == 'list_privileges':
  if len(args) != 3:
    print 'list_privileges requires 3 args'
    sys.exit(1)
  pp.pprint(client.list_privileges(args[0],eval(args[1]),eval(args[2]),))

elif cmd == 'grant_privileges':
  if len(args) != 1:
    print 'grant_privileges requires 1 args'
    sys.exit(1)
  pp.pprint(client.grant_privileges(eval(args[0]),))

elif cmd == 'revoke_privileges':
  if len(args) != 1:
    print 'revoke_privileges requires 1 args'
    sys.exit(1)
  pp.pprint(client.revoke_privileges(eval(args[0]),))

elif cmd == 'grant_revoke_privileges':
  if len(args) != 1:
    print 'grant_revoke_privileges requires 1 args'
    sys.exit(1)
  pp.pprint(client.grant_revoke_privileges(eval(args[0]),))

elif cmd == 'set_ugi':
  if len(args) != 2:
    print 'set_ugi requires 2 args'
    sys.exit(1)
  pp.pprint(client.set_ugi(args[0],eval(args[1]),))

elif cmd == 'get_delegation_token':
  if len(args) != 2:
    print 'get_delegation_token requires 2 args'
    sys.exit(1)
  pp.pprint(client.get_delegation_token(args[0],args[1],))

elif cmd == 'renew_delegation_token':
  if len(args) != 1:
    print 'renew_delegation_token requires 1 args'
    sys.exit(1)
  pp.pprint(client.renew_delegation_token(args[0],))

elif cmd == 'cancel_delegation_token':
  if len(args) != 1:
    print 'cancel_delegation_token requires 1 args'
    sys.exit(1)
  pp.pprint(client.cancel_delegation_token(args[0],))

elif cmd == 'get_open_txns':
  if len(args) != 0:
    print 'get_open_txns requires 0 args'
    sys.exit(1)
  pp.pprint(client.get_open_txns())

elif cmd == 'get_open_txns_info':
  if len(args) != 0:
    print 'get_open_txns_info requires 0 args'
    sys.exit(1)
  pp.pprint(client.get_open_txns_info())

elif cmd == 'open_txns':
  if len(args) != 1:
    print 'open_txns requires 1 args'
    sys.exit(1)
  pp.pprint(client.open_txns(eval(args[0]),))

elif cmd == 'abort_txn':
  if len(args) != 1:
    print 'abort_txn requires 1 args'
    sys.exit(1)
  pp.pprint(client.abort_txn(eval(args[0]),))

elif cmd == 'commit_txn':
  if len(args) != 1:
    print 'commit_txn requires 1 args'
    sys.exit(1)
  pp.pprint(client.commit_txn(eval(args[0]),))

elif cmd == 'lock':
  if len(args) != 1:
    print 'lock requires 1 args'
    sys.exit(1)
  pp.pprint(client.lock(eval(args[0]),))

elif cmd == 'check_lock':
  if len(args) != 1:
    print 'check_lock requires 1 args'
    sys.exit(1)
  pp.pprint(client.check_lock(eval(args[0]),))

elif cmd == 'unlock':
  if len(args) != 1:
    print 'unlock requires 1 args'
    sys.exit(1)
  pp.pprint(client.unlock(eval(args[0]),))

elif cmd == 'show_locks':
  if len(args) != 1:
    print 'show_locks requires 1 args'
    sys.exit(1)
  pp.pprint(client.show_locks(eval(args[0]),))

elif cmd == 'heartbeat':
  if len(args) != 1:
    print 'heartbeat requires 1 args'
    sys.exit(1)
  pp.pprint(client.heartbeat(eval(args[0]),))

elif cmd == 'heartbeat_txn_range':
  if len(args) != 1:
    print 'heartbeat_txn_range requires 1 args'
    sys.exit(1)
  pp.pprint(client.heartbeat_txn_range(eval(args[0]),))

elif cmd == 'compact':
  if len(args) != 1:
    print 'compact requires 1 args'
    sys.exit(1)
  pp.pprint(client.compact(eval(args[0]),))

elif cmd == 'show_compact':
  if len(args) != 1:
    print 'show_compact requires 1 args'
    sys.exit(1)
  pp.pprint(client.show_compact(eval(args[0]),))

elif cmd == 'add_dynamic_partitions':
  if len(args) != 1:
    print 'add_dynamic_partitions requires 1 args'
    sys.exit(1)
  pp.pprint(client.add_dynamic_partitions(eval(args[0]),))

elif cmd == 'get_next_notification':
  if len(args) != 1:
    print 'get_next_notification requires 1 args'
    sys.exit(1)
  pp.pprint(client.get_next_notification(eval(args[0]),))

elif cmd == 'get_current_notificationEventId':
  if len(args) != 0:
    print 'get_current_notificationEventId requires 0 args'
    sys.exit(1)
  pp.pprint(client.get_current_notificationEventId())

elif cmd == 'fire_listener_event':
  if len(args) != 1:
    print 'fire_listener_event requires 1 args'
    sys.exit(1)
  pp.pprint(client.fire_listener_event(eval(args[0]),))

else:
  print 'Unrecognized method %s' % cmd
  sys.exit(1)

transport.close()
