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

import sys
import pprint
if sys.version_info[0] > 2:
    from urllib.parse import urlparse
else:
    from urlparse import urlparse
from thrift.transport import TTransport, TSocket, TSSLSocket, THttpClient
from thrift.protocol.TBinaryProtocol import TBinaryProtocol

from hbase import THBaseService
from hbase.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]] [-s[sl]] [-novalidate] [-ca_certs certs] [-keyfile keyfile] [-certfile certfile] function [arg1 [arg2...]]')
    print('')
    print('Functions:')
    print('  bool exists(string table, TGet tget)')
    print('   existsAll(string table,  tgets)')
    print('  TResult get(string table, TGet tget)')
    print('   getMultiple(string table,  tgets)')
    print('  void put(string table, TPut tput)')
    print('  bool checkAndPut(string table, string row, string family, string qualifier, string value, TPut tput)')
    print('  void putMultiple(string table,  tputs)')
    print('  void deleteSingle(string table, TDelete tdelete)')
    print('   deleteMultiple(string table,  tdeletes)')
    print('  bool checkAndDelete(string table, string row, string family, string qualifier, string value, TDelete tdelete)')
    print('  TResult increment(string table, TIncrement tincrement)')
    print('  TResult append(string table, TAppend tappend)')
    print('  i32 openScanner(string table, TScan tscan)')
    print('   getScannerRows(i32 scannerId, i32 numRows)')
    print('  void closeScanner(i32 scannerId)')
    print('  void mutateRow(string table, TRowMutations trowMutations)')
    print('   getScannerResults(string table, TScan tscan, i32 numRows)')
    print('  THRegionLocation getRegionLocation(string table, string row, bool reload)')
    print('   getAllRegionLocations(string table)')
    print('  bool checkAndMutate(string table, string row, string family, string qualifier, TCompareOperator compareOperator, string value, TRowMutations rowMutations)')
    print('  TTableDescriptor getTableDescriptor(TTableName table)')
    print('   getTableDescriptors( tables)')
    print('  bool tableExists(TTableName tableName)')
    print('   getTableDescriptorsByPattern(string regex, bool includeSysTables)')
    print('   getTableDescriptorsByNamespace(string name)')
    print('   getTableNamesByPattern(string regex, bool includeSysTables)')
    print('   getTableNamesByNamespace(string name)')
    print('  void createTable(TTableDescriptor desc,  splitKeys)')
    print('  void deleteTable(TTableName tableName)')
    print('  void truncateTable(TTableName tableName, bool preserveSplits)')
    print('  void enableTable(TTableName tableName)')
    print('  void disableTable(TTableName tableName)')
    print('  bool isTableEnabled(TTableName tableName)')
    print('  bool isTableDisabled(TTableName tableName)')
    print('  bool isTableAvailable(TTableName tableName)')
    print('  bool isTableAvailableWithSplit(TTableName tableName,  splitKeys)')
    print('  void addColumnFamily(TTableName tableName, TColumnFamilyDescriptor column)')
    print('  void deleteColumnFamily(TTableName tableName, string column)')
    print('  void modifyColumnFamily(TTableName tableName, TColumnFamilyDescriptor column)')
    print('  void modifyTable(TTableDescriptor desc)')
    print('  void createNamespace(TNamespaceDescriptor namespaceDesc)')
    print('  void modifyNamespace(TNamespaceDescriptor namespaceDesc)')
    print('  void deleteNamespace(string name)')
    print('  TNamespaceDescriptor getNamespaceDescriptor(string name)')
    print('   listNamespaceDescriptors()')
    print('   listNamespaces()')
    print('  TThriftServerType getThriftServerType()')
    print('')
    sys.exit(0)

pp = pprint.PrettyPrinter(indent=2)
host = 'localhost'
port = 9090
uri = ''
framed = False
ssl = False
validate = True
ca_certs = None
keyfile = None
certfile = None
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

if sys.argv[argi] == '-s' or sys.argv[argi] == '-ssl':
    ssl = True
    argi += 1

if sys.argv[argi] == '-novalidate':
    validate = False
    argi += 1

if sys.argv[argi] == '-ca_certs':
    ca_certs = sys.argv[argi+1]
    argi += 2

if sys.argv[argi] == '-keyfile':
    keyfile = sys.argv[argi+1]
    argi += 2

if sys.argv[argi] == '-certfile':
    certfile = sys.argv[argi+1]
    argi += 2

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

if http:
    transport = THttpClient.THttpClient(host, port, uri)
else:
    if ssl:
        socket = TSSLSocket.TSSLSocket(host, port, validate=validate, ca_certs=ca_certs, keyfile=keyfile, certfile=certfile)
    else:
        socket = TSocket.TSocket(host, port)
    if framed:
        transport = TTransport.TFramedTransport(socket)
    else:
        transport = TTransport.TBufferedTransport(socket)
protocol = TBinaryProtocol(transport)
client = THBaseService.Client(protocol)
transport.open()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

transport.close()
