You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gx...@apache.org on 2019/11/09 19:05:42 UTC

[hbase] branch HBASE-20395 created (now 6cf90fc)

This is an automated email from the ASF dual-hosted git repository.

gxcheng pushed a change to branch HBASE-20395
in repository https://gitbox.apache.org/repos/asf/hbase.git.


      at 6cf90fc  HBASE-20395 Displaying thrift server type on the thrift page

This branch includes the following new commits:

     new 6cf90fc  HBASE-20395 Displaying thrift server type on the thrift page

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[hbase] 01/01: HBASE-20395 Displaying thrift server type on the thrift page

Posted by gx...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gxcheng pushed a commit to branch HBASE-20395
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit 6cf90fc48dc1586791499503562fe800cf727c55
Author: Guangxu Cheng <gu...@gmail.com>
AuthorDate: Sun Nov 10 02:28:50 2019 +0800

    HBASE-20395 Displaying thrift server type on the thrift page
---
 .../src/main/python/thrift1/DemoClient.py          |     7 +-
 .../main/python/thrift1/gen-py/hbase/Hbase-remote  |   567 +-
 .../src/main/python/thrift1/gen-py/hbase/Hbase.py  | 21253 ++++++++++---------
 .../main/python/thrift1/gen-py/hbase/constants.py  |     9 +-
 .../src/main/python/thrift1/gen-py/hbase/ttypes.py |  2439 ++-
 .../src/main/python/thrift2/DemoClient.py          |     5 +
 .../thrift2/gen-py/hbase/THBaseService-remote      |   504 +-
 .../python/thrift2/gen-py/hbase/THBaseService.py   | 15567 +++++++++-----
 .../main/python/thrift2/gen-py/hbase/constants.py  |     9 +-
 .../src/main/python/thrift2/gen-py/hbase/ttypes.py |  5791 ++---
 .../hadoop/hbase/thrift/HBaseServiceHandler.java   |     2 -
 .../hbase/thrift/ThriftHBaseServiceHandler.java    |     6 +
 .../apache/hadoop/hbase/thrift/ThriftMetrics.java  |     8 +-
 .../apache/hadoop/hbase/thrift/ThriftServer.java   |     1 +
 .../hbase/thrift/generated/AlreadyExists.java      |     2 +-
 .../hbase/thrift/generated/BatchMutation.java      |     2 +-
 .../hbase/thrift/generated/ColumnDescriptor.java   |     2 +-
 .../hadoop/hbase/thrift/generated/Hbase.java       |   787 +-
 .../hadoop/hbase/thrift/generated/IOError.java     |     2 +-
 .../hbase/thrift/generated/IllegalArgument.java    |     2 +-
 .../hadoop/hbase/thrift/generated/Mutation.java    |     2 +-
 .../hadoop/hbase/thrift/generated/TAppend.java     |     2 +-
 .../hadoop/hbase/thrift/generated/TCell.java       |     2 +-
 .../hadoop/hbase/thrift/generated/TColumn.java     |     2 +-
 .../hadoop/hbase/thrift/generated/TIncrement.java  |     2 +-
 .../hadoop/hbase/thrift/generated/TRegionInfo.java |     2 +-
 .../hadoop/hbase/thrift/generated/TRowResult.java  |     2 +-
 .../hadoop/hbase/thrift/generated/TScan.java       |     2 +-
 .../generated/TThriftServerType.java}              |    24 +-
 .../hbase/thrift2/ThriftHBaseServiceHandler.java   |     6 +
 .../hadoop/hbase/thrift2/generated/TAppend.java    |     2 +-
 .../hbase/thrift2/generated/TAuthorization.java    |     2 +-
 .../hbase/thrift2/generated/TBloomFilterType.java  |     2 +-
 .../hbase/thrift2/generated/TCellVisibility.java   |     2 +-
 .../hadoop/hbase/thrift2/generated/TColumn.java    |     2 +-
 .../thrift2/generated/TColumnFamilyDescriptor.java |     2 +-
 .../hbase/thrift2/generated/TColumnIncrement.java  |     2 +-
 .../hbase/thrift2/generated/TColumnValue.java      |     2 +-
 .../hbase/thrift2/generated/TCompareOperator.java  |     2 +-
 .../thrift2/generated/TCompressionAlgorithm.java   |     2 +-
 .../hbase/thrift2/generated/TConsistency.java      |     2 +-
 .../thrift2/generated/TDataBlockEncoding.java      |     2 +-
 .../hadoop/hbase/thrift2/generated/TDelete.java    |     2 +-
 .../hbase/thrift2/generated/TDeleteType.java       |     2 +-
 .../hbase/thrift2/generated/TDurability.java       |     2 +-
 .../hadoop/hbase/thrift2/generated/TGet.java       |     2 +-
 .../hbase/thrift2/generated/THBaseService.java     |  5017 +++--
 .../hbase/thrift2/generated/THRegionInfo.java      |     2 +-
 .../hbase/thrift2/generated/THRegionLocation.java  |     2 +-
 .../hadoop/hbase/thrift2/generated/TIOError.java   |     2 +-
 .../hbase/thrift2/generated/TIllegalArgument.java  |     2 +-
 .../hadoop/hbase/thrift2/generated/TIncrement.java |     2 +-
 .../hbase/thrift2/generated/TKeepDeletedCells.java |     2 +-
 .../hadoop/hbase/thrift2/generated/TMutation.java  |     2 +-
 .../thrift2/generated/TNamespaceDescriptor.java    |     2 +-
 .../hadoop/hbase/thrift2/generated/TPut.java       |     2 +-
 .../hadoop/hbase/thrift2/generated/TReadType.java  |     2 +-
 .../hadoop/hbase/thrift2/generated/TResult.java    |     2 +-
 .../hbase/thrift2/generated/TRowMutations.java     |     2 +-
 .../hadoop/hbase/thrift2/generated/TScan.java      |     2 +-
 .../hbase/thrift2/generated/TServerName.java       |     2 +-
 .../hbase/thrift2/generated/TTableDescriptor.java  |     2 +-
 .../hadoop/hbase/thrift2/generated/TTableName.java |     2 +-
 .../{TReadType.java => TThriftServerType.java}     |    22 +-
 .../hadoop/hbase/thrift2/generated/TTimeRange.java |     2 +-
 .../main/resources/hbase-webapps/thrift/thrift.jsp |     7 +-
 .../org/apache/hadoop/hbase/thrift/Hbase.thrift    |    15 +
 .../org/apache/hadoop/hbase/thrift2/hbase.thrift   |    15 +
 .../hbase/thrift/HBaseThriftTestingUtility.java    |    96 +
 .../hadoop/hbase/thrift/TestThriftServer.java      |    35 +
 .../thrift2/TestThriftHBaseServiceHandler.java     |    35 +
 71 files changed, 31270 insertions(+), 21049 deletions(-)

diff --git a/hbase-examples/src/main/python/thrift1/DemoClient.py b/hbase-examples/src/main/python/thrift1/DemoClient.py
index 0d41226..47a6e7d 100644
--- a/hbase-examples/src/main/python/thrift1/DemoClient.py
+++ b/hbase-examples/src/main/python/thrift1/DemoClient.py
@@ -30,7 +30,7 @@ sys.path.append(gen_py_path)
 from thrift import Thrift
 from thrift.transport import TSocket, TTransport
 from thrift.protocol import TBinaryProtocol
-from hbase import ttypes
+from hbase.ttypes import *
 from hbase.Hbase import Client, ColumnDescriptor, Mutation
 
 def printVersions(row, versions):
@@ -66,6 +66,11 @@ def demo_client(host, port, is_framed_transport):
   # Connect!
   transport.open()
 
+  # Check Thrift Server Type
+  serverType = client.getThriftServerType()
+  if serverType != TThriftServerType.ONE:
+    raise Exception("Mismatch between client and server, server type is %s" % serverType)
+
   t = "demo_table"
 
   #
diff --git a/hbase-examples/src/main/python/thrift1/gen-py/hbase/Hbase-remote b/hbase-examples/src/main/python/thrift1/gen-py/hbase/Hbase-remote
old mode 100644
new mode 100755
index 884a87d..69f0517
--- a/hbase-examples/src/main/python/thrift1/gen-py/hbase/Hbase-remote
+++ b/hbase-examples/src/main/python/thrift1/gen-py/hbase/Hbase-remote
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Autogenerated by Thrift Compiler (0.9.0)
+# Autogenerated by Thrift Compiler (0.12.0)
 #
 # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 #
@@ -9,374 +9,417 @@
 
 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
+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
 
-import Hbase
-from ttypes import *
+from hbase import Hbase
+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]] function [arg1 [arg2...]]'
-  print ''
-  print 'Functions:'
-  print '  void enableTable(Bytes tableName)'
-  print '  void disableTable(Bytes tableName)'
-  print '  bool isTableEnabled(Bytes tableName)'
-  print '  void compact(Bytes tableNameOrRegionName)'
-  print '  void majorCompact(Bytes tableNameOrRegionName)'
-  print '   getTableNames()'
-  print '   getColumnDescriptors(Text tableName)'
-  print '   getTableRegions(Text tableName)'
-  print '  void createTable(Text tableName,  columnFamilies)'
-  print '  void deleteTable(Text tableName)'
-  print '   get(Text tableName, Text row, Text column,  attributes)'
-  print '   getVer(Text tableName, Text row, Text column, i32 numVersions,  attributes)'
-  print '   getVerTs(Text tableName, Text row, Text column, i64 timestamp, i32 numVersions,  attributes)'
-  print '   getRow(Text tableName, Text row,  attributes)'
-  print '   getRowWithColumns(Text tableName, Text row,  columns,  attributes)'
-  print '   getRowTs(Text tableName, Text row, i64 timestamp,  attributes)'
-  print '   getRowWithColumnsTs(Text tableName, Text row,  columns, i64 timestamp,  attributes)'
-  print '   getRows(Text tableName,  rows,  attributes)'
-  print '   getRowsWithColumns(Text tableName,  rows,  columns,  attributes)'
-  print '   getRowsTs(Text tableName,  rows, i64 timestamp,  attributes)'
-  print '   getRowsWithColumnsTs(Text tableName,  rows,  columns, i64 timestamp,  attributes)'
-  print '  void mutateRow(Text tableName, Text row,  mutations,  attributes)'
-  print '  void mutateRowTs(Text tableName, Text row,  mutations, i64 timestamp,  attributes)'
-  print '  void mutateRows(Text tableName,  rowBatches,  attributes)'
-  print '  void mutateRowsTs(Text tableName,  rowBatches, i64 timestamp,  attributes)'
-  print '  i64 atomicIncrement(Text tableName, Text row, Text column, i64 value)'
-  print '  void deleteAll(Text tableName, Text row, Text column,  attributes)'
-  print '  void deleteAllTs(Text tableName, Text row, Text column, i64 timestamp,  attributes)'
-  print '  void deleteAllRow(Text tableName, Text row,  attributes)'
-  print '  void increment(TIncrement increment)'
-  print '  void incrementRows( increments)'
-  print '  void deleteAllRowTs(Text tableName, Text row, i64 timestamp,  attributes)'
-  print '  ScannerID scannerOpenWithScan(Text tableName, TScan scan,  attributes)'
-  print '  ScannerID scannerOpen(Text tableName, Text startRow,  columns,  attributes)'
-  print '  ScannerID scannerOpenWithStop(Text tableName, Text startRow, Text stopRow,  columns,  attributes)'
-  print '  ScannerID scannerOpenWithPrefix(Text tableName, Text startAndPrefix,  columns,  attributes)'
-  print '  ScannerID scannerOpenTs(Text tableName, Text startRow,  columns, i64 timestamp,  attributes)'
-  print '  ScannerID scannerOpenWithStopTs(Text tableName, Text startRow, Text stopRow,  columns, i64 timestamp,  attributes)'
-  print '   scannerGet(ScannerID id)'
-  print '   scannerGetList(ScannerID id, i32 nbRows)'
-  print '  void scannerClose(ScannerID id)'
-  print '   getRowOrBefore(Text tableName, Text row, Text family)'
-  print '  TRegionInfo getRegionInfo(Text row)'
-  print ''
-  sys.exit(0)
-
-pp = pprint.PrettyPrinter(indent = 2)
+    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('  void enableTable(Bytes tableName)')
+    print('  void disableTable(Bytes tableName)')
+    print('  bool isTableEnabled(Bytes tableName)')
+    print('  void compact(Bytes tableNameOrRegionName)')
+    print('  void majorCompact(Bytes tableNameOrRegionName)')
+    print('   getTableNames()')
+    print('   getColumnDescriptors(Text tableName)')
+    print('   getTableRegions(Text tableName)')
+    print('  void createTable(Text tableName,  columnFamilies)')
+    print('  void deleteTable(Text tableName)')
+    print('   get(Text tableName, Text row, Text column,  attributes)')
+    print('   getVer(Text tableName, Text row, Text column, i32 numVersions,  attributes)')
+    print('   getVerTs(Text tableName, Text row, Text column, i64 timestamp, i32 numVersions,  attributes)')
+    print('   getRow(Text tableName, Text row,  attributes)')
+    print('   getRowWithColumns(Text tableName, Text row,  columns,  attributes)')
+    print('   getRowTs(Text tableName, Text row, i64 timestamp,  attributes)')
+    print('   getRowWithColumnsTs(Text tableName, Text row,  columns, i64 timestamp,  attributes)')
+    print('   getRows(Text tableName,  rows,  attributes)')
+    print('   getRowsWithColumns(Text tableName,  rows,  columns,  attributes)')
+    print('   getRowsTs(Text tableName,  rows, i64 timestamp,  attributes)')
+    print('   getRowsWithColumnsTs(Text tableName,  rows,  columns, i64 timestamp,  attributes)')
+    print('  void mutateRow(Text tableName, Text row,  mutations,  attributes)')
+    print('  void mutateRowTs(Text tableName, Text row,  mutations, i64 timestamp,  attributes)')
+    print('  void mutateRows(Text tableName,  rowBatches,  attributes)')
+    print('  void mutateRowsTs(Text tableName,  rowBatches, i64 timestamp,  attributes)')
+    print('  i64 atomicIncrement(Text tableName, Text row, Text column, i64 value)')
+    print('  void deleteAll(Text tableName, Text row, Text column,  attributes)')
+    print('  void deleteAllTs(Text tableName, Text row, Text column, i64 timestamp,  attributes)')
+    print('  void deleteAllRow(Text tableName, Text row,  attributes)')
+    print('  void increment(TIncrement increment)')
+    print('  void incrementRows( increments)')
+    print('  void deleteAllRowTs(Text tableName, Text row, i64 timestamp,  attributes)')
+    print('  ScannerID scannerOpenWithScan(Text tableName, TScan scan,  attributes)')
+    print('  ScannerID scannerOpen(Text tableName, Text startRow,  columns,  attributes)')
+    print('  ScannerID scannerOpenWithStop(Text tableName, Text startRow, Text stopRow,  columns,  attributes)')
+    print('  ScannerID scannerOpenWithPrefix(Text tableName, Text startAndPrefix,  columns,  attributes)')
+    print('  ScannerID scannerOpenTs(Text tableName, Text startRow,  columns, i64 timestamp,  attributes)')
+    print('  ScannerID scannerOpenWithStopTs(Text tableName, Text startRow, Text stopRow,  columns, i64 timestamp,  attributes)')
+    print('   scannerGet(ScannerID id)')
+    print('   scannerGetList(ScannerID id, i32 nbRows)')
+    print('  void scannerClose(ScannerID id)')
+    print('  TRegionInfo getRegionInfo(Text row)')
+    print('   append(TAppend append)')
+    print('  bool checkAndPut(Text tableName, Text row, Text column, Text value, Mutation mput,  attributes)')
+    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
+    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
+    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
+    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:]
+args = sys.argv[argi + 1:]
 
 if http:
-  transport = THttpClient.THttpClient(host, port, uri)
+    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)
+    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 = Hbase.Client(protocol)
 transport.open()
 
 if cmd == 'enableTable':
-  if len(args) != 1:
-    print 'enableTable requires 1 args'
-    sys.exit(1)
-  pp.pprint(client.enableTable(eval(args[0]),))
+    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]),))
+    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]),))
+    if len(args) != 1:
+        print('isTableEnabled requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.isTableEnabled(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]),))
+    if len(args) != 1:
+        print('compact requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.compact(eval(args[0]),))
 
 elif cmd == 'majorCompact':
-  if len(args) != 1:
-    print 'majorCompact requires 1 args'
-    sys.exit(1)
-  pp.pprint(client.majorCompact(eval(args[0]),))
+    if len(args) != 1:
+        print('majorCompact requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.majorCompact(eval(args[0]),))
 
 elif cmd == 'getTableNames':
-  if len(args) != 0:
-    print 'getTableNames requires 0 args'
-    sys.exit(1)
-  pp.pprint(client.getTableNames())
+    if len(args) != 0:
+        print('getTableNames requires 0 args')
+        sys.exit(1)
+    pp.pprint(client.getTableNames())
 
 elif cmd == 'getColumnDescriptors':
-  if len(args) != 1:
-    print 'getColumnDescriptors requires 1 args'
-    sys.exit(1)
-  pp.pprint(client.getColumnDescriptors(eval(args[0]),))
+    if len(args) != 1:
+        print('getColumnDescriptors requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.getColumnDescriptors(eval(args[0]),))
 
 elif cmd == 'getTableRegions':
-  if len(args) != 1:
-    print 'getTableRegions requires 1 args'
-    sys.exit(1)
-  pp.pprint(client.getTableRegions(eval(args[0]),))
+    if len(args) != 1:
+        print('getTableRegions requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.getTableRegions(eval(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]),))
+    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]),))
+    if len(args) != 1:
+        print('deleteTable requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.deleteTable(eval(args[0]),))
 
 elif cmd == 'get':
-  if len(args) != 4:
-    print 'get requires 4 args'
-    sys.exit(1)
-  pp.pprint(client.get(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),))
+    if len(args) != 4:
+        print('get requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.get(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]),))
 
 elif cmd == 'getVer':
-  if len(args) != 5:
-    print 'getVer requires 5 args'
-    sys.exit(1)
-  pp.pprint(client.getVer(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),eval(args[4]),))
+    if len(args) != 5:
+        print('getVer requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.getVer(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]), eval(args[4]),))
 
 elif cmd == 'getVerTs':
-  if len(args) != 6:
-    print 'getVerTs requires 6 args'
-    sys.exit(1)
-  pp.pprint(client.getVerTs(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),eval(args[4]),eval(args[5]),))
+    if len(args) != 6:
+        print('getVerTs requires 6 args')
+        sys.exit(1)
+    pp.pprint(client.getVerTs(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]), eval(args[4]), eval(args[5]),))
 
 elif cmd == 'getRow':
-  if len(args) != 3:
-    print 'getRow requires 3 args'
-    sys.exit(1)
-  pp.pprint(client.getRow(eval(args[0]),eval(args[1]),eval(args[2]),))
+    if len(args) != 3:
+        print('getRow requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getRow(eval(args[0]), eval(args[1]), eval(args[2]),))
 
 elif cmd == 'getRowWithColumns':
-  if len(args) != 4:
-    print 'getRowWithColumns requires 4 args'
-    sys.exit(1)
-  pp.pprint(client.getRowWithColumns(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),))
+    if len(args) != 4:
+        print('getRowWithColumns requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.getRowWithColumns(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]),))
 
 elif cmd == 'getRowTs':
-  if len(args) != 4:
-    print 'getRowTs requires 4 args'
-    sys.exit(1)
-  pp.pprint(client.getRowTs(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),))
+    if len(args) != 4:
+        print('getRowTs requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.getRowTs(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]),))
 
 elif cmd == 'getRowWithColumnsTs':
-  if len(args) != 5:
-    print 'getRowWithColumnsTs requires 5 args'
-    sys.exit(1)
-  pp.pprint(client.getRowWithColumnsTs(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),eval(args[4]),))
+    if len(args) != 5:
+        print('getRowWithColumnsTs requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.getRowWithColumnsTs(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]), eval(args[4]),))
 
 elif cmd == 'getRows':
-  if len(args) != 3:
-    print 'getRows requires 3 args'
-    sys.exit(1)
-  pp.pprint(client.getRows(eval(args[0]),eval(args[1]),eval(args[2]),))
+    if len(args) != 3:
+        print('getRows requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getRows(eval(args[0]), eval(args[1]), eval(args[2]),))
 
 elif cmd == 'getRowsWithColumns':
-  if len(args) != 4:
-    print 'getRowsWithColumns requires 4 args'
-    sys.exit(1)
-  pp.pprint(client.getRowsWithColumns(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),))
+    if len(args) != 4:
+        print('getRowsWithColumns requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.getRowsWithColumns(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]),))
 
 elif cmd == 'getRowsTs':
-  if len(args) != 4:
-    print 'getRowsTs requires 4 args'
-    sys.exit(1)
-  pp.pprint(client.getRowsTs(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),))
+    if len(args) != 4:
+        print('getRowsTs requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.getRowsTs(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]),))
 
 elif cmd == 'getRowsWithColumnsTs':
-  if len(args) != 5:
-    print 'getRowsWithColumnsTs requires 5 args'
-    sys.exit(1)
-  pp.pprint(client.getRowsWithColumnsTs(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),eval(args[4]),))
+    if len(args) != 5:
+        print('getRowsWithColumnsTs requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.getRowsWithColumnsTs(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]), eval(args[4]),))
 
 elif cmd == 'mutateRow':
-  if len(args) != 4:
-    print 'mutateRow requires 4 args'
-    sys.exit(1)
-  pp.pprint(client.mutateRow(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),))
+    if len(args) != 4:
+        print('mutateRow requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.mutateRow(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]),))
 
 elif cmd == 'mutateRowTs':
-  if len(args) != 5:
-    print 'mutateRowTs requires 5 args'
-    sys.exit(1)
-  pp.pprint(client.mutateRowTs(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),eval(args[4]),))
+    if len(args) != 5:
+        print('mutateRowTs requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.mutateRowTs(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]), eval(args[4]),))
 
 elif cmd == 'mutateRows':
-  if len(args) != 3:
-    print 'mutateRows requires 3 args'
-    sys.exit(1)
-  pp.pprint(client.mutateRows(eval(args[0]),eval(args[1]),eval(args[2]),))
+    if len(args) != 3:
+        print('mutateRows requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.mutateRows(eval(args[0]), eval(args[1]), eval(args[2]),))
 
 elif cmd == 'mutateRowsTs':
-  if len(args) != 4:
-    print 'mutateRowsTs requires 4 args'
-    sys.exit(1)
-  pp.pprint(client.mutateRowsTs(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),))
+    if len(args) != 4:
+        print('mutateRowsTs requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.mutateRowsTs(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]),))
 
 elif cmd == 'atomicIncrement':
-  if len(args) != 4:
-    print 'atomicIncrement requires 4 args'
-    sys.exit(1)
-  pp.pprint(client.atomicIncrement(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),))
+    if len(args) != 4:
+        print('atomicIncrement requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.atomicIncrement(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]),))
 
 elif cmd == 'deleteAll':
-  if len(args) != 4:
-    print 'deleteAll requires 4 args'
-    sys.exit(1)
-  pp.pprint(client.deleteAll(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),))
+    if len(args) != 4:
+        print('deleteAll requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.deleteAll(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]),))
 
 elif cmd == 'deleteAllTs':
-  if len(args) != 5:
-    print 'deleteAllTs requires 5 args'
-    sys.exit(1)
-  pp.pprint(client.deleteAllTs(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),eval(args[4]),))
+    if len(args) != 5:
+        print('deleteAllTs requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.deleteAllTs(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]), eval(args[4]),))
 
 elif cmd == 'deleteAllRow':
-  if len(args) != 3:
-    print 'deleteAllRow requires 3 args'
-    sys.exit(1)
-  pp.pprint(client.deleteAllRow(eval(args[0]),eval(args[1]),eval(args[2]),))
+    if len(args) != 3:
+        print('deleteAllRow requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.deleteAllRow(eval(args[0]), eval(args[1]), eval(args[2]),))
 
 elif cmd == 'increment':
-  if len(args) != 1:
-    print 'increment requires 1 args'
-    sys.exit(1)
-  pp.pprint(client.increment(eval(args[0]),))
+    if len(args) != 1:
+        print('increment requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.increment(eval(args[0]),))
 
 elif cmd == 'incrementRows':
-  if len(args) != 1:
-    print 'incrementRows requires 1 args'
-    sys.exit(1)
-  pp.pprint(client.incrementRows(eval(args[0]),))
+    if len(args) != 1:
+        print('incrementRows requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.incrementRows(eval(args[0]),))
 
 elif cmd == 'deleteAllRowTs':
-  if len(args) != 4:
-    print 'deleteAllRowTs requires 4 args'
-    sys.exit(1)
-  pp.pprint(client.deleteAllRowTs(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),))
+    if len(args) != 4:
+        print('deleteAllRowTs requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.deleteAllRowTs(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]),))
 
 elif cmd == 'scannerOpenWithScan':
-  if len(args) != 3:
-    print 'scannerOpenWithScan requires 3 args'
-    sys.exit(1)
-  pp.pprint(client.scannerOpenWithScan(eval(args[0]),eval(args[1]),eval(args[2]),))
+    if len(args) != 3:
+        print('scannerOpenWithScan requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.scannerOpenWithScan(eval(args[0]), eval(args[1]), eval(args[2]),))
 
 elif cmd == 'scannerOpen':
-  if len(args) != 4:
-    print 'scannerOpen requires 4 args'
-    sys.exit(1)
-  pp.pprint(client.scannerOpen(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),))
+    if len(args) != 4:
+        print('scannerOpen requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.scannerOpen(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]),))
 
 elif cmd == 'scannerOpenWithStop':
-  if len(args) != 5:
-    print 'scannerOpenWithStop requires 5 args'
-    sys.exit(1)
-  pp.pprint(client.scannerOpenWithStop(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),eval(args[4]),))
+    if len(args) != 5:
+        print('scannerOpenWithStop requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.scannerOpenWithStop(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]), eval(args[4]),))
 
 elif cmd == 'scannerOpenWithPrefix':
-  if len(args) != 4:
-    print 'scannerOpenWithPrefix requires 4 args'
-    sys.exit(1)
-  pp.pprint(client.scannerOpenWithPrefix(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),))
+    if len(args) != 4:
+        print('scannerOpenWithPrefix requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.scannerOpenWithPrefix(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]),))
 
 elif cmd == 'scannerOpenTs':
-  if len(args) != 5:
-    print 'scannerOpenTs requires 5 args'
-    sys.exit(1)
-  pp.pprint(client.scannerOpenTs(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),eval(args[4]),))
+    if len(args) != 5:
+        print('scannerOpenTs requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.scannerOpenTs(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]), eval(args[4]),))
 
 elif cmd == 'scannerOpenWithStopTs':
-  if len(args) != 6:
-    print 'scannerOpenWithStopTs requires 6 args'
-    sys.exit(1)
-  pp.pprint(client.scannerOpenWithStopTs(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),eval(args[4]),eval(args[5]),))
+    if len(args) != 6:
+        print('scannerOpenWithStopTs requires 6 args')
+        sys.exit(1)
+    pp.pprint(client.scannerOpenWithStopTs(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]), eval(args[4]), eval(args[5]),))
 
 elif cmd == 'scannerGet':
-  if len(args) != 1:
-    print 'scannerGet requires 1 args'
-    sys.exit(1)
-  pp.pprint(client.scannerGet(eval(args[0]),))
+    if len(args) != 1:
+        print('scannerGet requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.scannerGet(eval(args[0]),))
 
 elif cmd == 'scannerGetList':
-  if len(args) != 2:
-    print 'scannerGetList requires 2 args'
-    sys.exit(1)
-  pp.pprint(client.scannerGetList(eval(args[0]),eval(args[1]),))
+    if len(args) != 2:
+        print('scannerGetList requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.scannerGetList(eval(args[0]), eval(args[1]),))
 
 elif cmd == 'scannerClose':
-  if len(args) != 1:
-    print 'scannerClose requires 1 args'
-    sys.exit(1)
-  pp.pprint(client.scannerClose(eval(args[0]),))
-
-elif cmd == 'getRowOrBefore':
-  if len(args) != 3:
-    print 'getRowOrBefore requires 3 args'
-    sys.exit(1)
-  pp.pprint(client.getRowOrBefore(eval(args[0]),eval(args[1]),eval(args[2]),))
+    if len(args) != 1:
+        print('scannerClose requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.scannerClose(eval(args[0]),))
 
 elif cmd == 'getRegionInfo':
-  if len(args) != 1:
-    print 'getRegionInfo requires 1 args'
-    sys.exit(1)
-  pp.pprint(client.getRegionInfo(eval(args[0]),))
+    if len(args) != 1:
+        print('getRegionInfo requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.getRegionInfo(eval(args[0]),))
+
+elif cmd == 'append':
+    if len(args) != 1:
+        print('append requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.append(eval(args[0]),))
+
+elif cmd == 'checkAndPut':
+    if len(args) != 6:
+        print('checkAndPut requires 6 args')
+        sys.exit(1)
+    pp.pprint(client.checkAndPut(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]), eval(args[4]), eval(args[5]),))
+
+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)
+    print('Unrecognized method %s' % cmd)
+    sys.exit(1)
 
 transport.close()
diff --git a/hbase-examples/src/main/python/thrift1/gen-py/hbase/Hbase.py b/hbase-examples/src/main/python/thrift1/gen-py/hbase/Hbase.py
index 2f22523..48d602e 100644
--- a/hbase-examples/src/main/python/thrift1/gen-py/hbase/Hbase.py
+++ b/hbase-examples/src/main/python/thrift1/gen-py/hbase/Hbase.py
@@ -1,454 +1,9498 @@
 #
-# Autogenerated by Thrift Compiler (0.9.0)
+# Autogenerated by Thrift Compiler (0.12.0)
 #
 # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 #
 #  options string: py
 #
 
-from thrift.Thrift import TType, TMessageType, TException, TApplicationException
-from ttypes import *
+from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, TApplicationException
+from thrift.protocol.TProtocol import TProtocolException
+from thrift.TRecursive import fix_spec
+
+import sys
+import logging
+from .ttypes import *
 from thrift.Thrift import TProcessor
 from thrift.transport import TTransport
-from thrift.protocol import TBinaryProtocol, TProtocol
-try:
-  from thrift.protocol import fastbinary
-except:
-  fastbinary = None
+all_structs = []
 
 
-class Iface:
-  def enableTable(self, tableName):
-    """
-    Brings a table on-line (enables it)
+class Iface(object):
+    def enableTable(self, tableName):
+        """
+        Brings a table on-line (enables it)
 
-    Parameters:
-     - tableName: name of the table
+        Parameters:
+         - tableName: name of the table
+
+        """
+        pass
+
+    def disableTable(self, tableName):
+        """
+        Disables a table (takes it off-line) If it is being served, the master
+        will tell the servers to stop serving it.
+
+        Parameters:
+         - tableName: name of the table
+
+        """
+        pass
+
+    def isTableEnabled(self, tableName):
+        """
+        @return true if table is on-line
+
+        Parameters:
+         - tableName: name of the table to check
+
+        """
+        pass
+
+    def compact(self, tableNameOrRegionName):
+        """
+        Parameters:
+         - tableNameOrRegionName
+
+        """
+        pass
+
+    def majorCompact(self, tableNameOrRegionName):
+        """
+        Parameters:
+         - tableNameOrRegionName
+
+        """
+        pass
+
+    def getTableNames(self):
+        """
+        List all the userspace tables.
+
+        @return returns a list of names
+
+        """
+        pass
+
+    def getColumnDescriptors(self, tableName):
+        """
+        List all the column families assoicated with a table.
+
+        @return list of column family descriptors
+
+        Parameters:
+         - tableName: table name
+
+        """
+        pass
+
+    def getTableRegions(self, tableName):
+        """
+        List the regions associated with a table.
+
+        @return list of region descriptors
+
+        Parameters:
+         - tableName: table name
+
+        """
+        pass
+
+    def createTable(self, tableName, columnFamilies):
+        """
+        Create a table with the specified column families.  The name
+        field for each ColumnDescriptor must be set and must end in a
+        colon (:). All other fields are optional and will get default
+        values if not explicitly specified.
+
+        @throws IllegalArgument if an input parameter is invalid
+
+        @throws AlreadyExists if the table name already exists
+
+        Parameters:
+         - tableName: name of table to create
+         - columnFamilies: list of column family descriptors
+
+        """
+        pass
+
+    def deleteTable(self, tableName):
+        """
+        Deletes a table
+
+        @throws IOError if table doesn't exist on erer or there was some other
+        problem
+
+        Parameters:
+         - tableName: name of table to delete
+
+        """
+        pass
+
+    def get(self, tableName, row, column, attributes):
+        """
+        Get a single TCell for the specified table, row, and column at the
+        latest timestamp. Returns an empty list if no such value exists.
+
+        @return value for specified row/column
+
+        Parameters:
+         - tableName: name of table
+         - row: row key
+         - column: column name
+         - attributes: Get attributes
+
+        """
+        pass
+
+    def getVer(self, tableName, row, column, numVersions, attributes):
+        """
+        Get the specified number of versions for the specified table,
+        row, and column.
+
+        @return list of cells for specified row/column
+
+        Parameters:
+         - tableName: name of table
+         - row: row key
+         - column: column name
+         - numVersions: number of versions to retrieve
+         - attributes: Get attributes
+
+        """
+        pass
+
+    def getVerTs(self, tableName, row, column, timestamp, numVersions, attributes):
+        """
+        Get the specified number of versions for the specified table,
+        row, and column.  Only versions less than or equal to the specified
+        timestamp will be returned.
+
+        @return list of cells for specified row/column
+
+        Parameters:
+         - tableName: name of table
+         - row: row key
+         - column: column name
+         - timestamp: timestamp
+         - numVersions: number of versions to retrieve
+         - attributes: Get attributes
+
+        """
+        pass
+
+    def getRow(self, tableName, row, attributes):
+        """
+        Get all the data for the specified table and row at the latest
+        timestamp. Returns an empty list if the row does not exist.
+
+        @return TRowResult containing the row and map of columns to TCells
+
+        Parameters:
+         - tableName: name of table
+         - row: row key
+         - attributes: Get attributes
+
+        """
+        pass
+
+    def getRowWithColumns(self, tableName, row, columns, attributes):
+        """
+        Get the specified columns for the specified table and row at the latest
+        timestamp. Returns an empty list if the row does not exist.
+
+        @return TRowResult containing the row and map of columns to TCells
+
+        Parameters:
+         - tableName: name of table
+         - row: row key
+         - columns: List of columns to return, null for all columns
+         - attributes: Get attributes
+
+        """
+        pass
+
+    def getRowTs(self, tableName, row, timestamp, attributes):
+        """
+        Get all the data for the specified table and row at the specified
+        timestamp. Returns an empty list if the row does not exist.
+
+        @return TRowResult containing the row and map of columns to TCells
+
+        Parameters:
+         - tableName: name of the table
+         - row: row key
+         - timestamp: timestamp
+         - attributes: Get attributes
+
+        """
+        pass
+
+    def getRowWithColumnsTs(self, tableName, row, columns, timestamp, attributes):
+        """
+        Get the specified columns for the specified table and row at the specified
+        timestamp. Returns an empty list if the row does not exist.
+
+        @return TRowResult containing the row and map of columns to TCells
+
+        Parameters:
+         - tableName: name of table
+         - row: row key
+         - columns: List of columns to return, null for all columns
+         - timestamp
+         - attributes: Get attributes
+
+        """
+        pass
+
+    def getRows(self, tableName, rows, attributes):
+        """
+        Get all the data for the specified table and rows at the latest
+        timestamp. Returns an empty list if no rows exist.
+
+        @return TRowResult containing the rows and map of columns to TCells
+
+        Parameters:
+         - tableName: name of table
+         - rows: row keys
+         - attributes: Get attributes
+
+        """
+        pass
+
+    def getRowsWithColumns(self, tableName, rows, columns, attributes):
+        """
+        Get the specified columns for the specified table and rows at the latest
+        timestamp. Returns an empty list if no rows exist.
+
+        @return TRowResult containing the rows and map of columns to TCells
+
+        Parameters:
+         - tableName: name of table
+         - rows: row keys
+         - columns: List of columns to return, null for all columns
+         - attributes: Get attributes
+
+        """
+        pass
+
+    def getRowsTs(self, tableName, rows, timestamp, attributes):
+        """
+        Get all the data for the specified table and rows at the specified
+        timestamp. Returns an empty list if no rows exist.
+
+        @return TRowResult containing the rows and map of columns to TCells
+
+        Parameters:
+         - tableName: name of the table
+         - rows: row keys
+         - timestamp: timestamp
+         - attributes: Get attributes
+
+        """
+        pass
+
+    def getRowsWithColumnsTs(self, tableName, rows, columns, timestamp, attributes):
+        """
+        Get the specified columns for the specified table and rows at the specified
+        timestamp. Returns an empty list if no rows exist.
+
+        @return TRowResult containing the rows and map of columns to TCells
+
+        Parameters:
+         - tableName: name of table
+         - rows: row keys
+         - columns: List of columns to return, null for all columns
+         - timestamp
+         - attributes: Get attributes
+
+        """
+        pass
+
+    def mutateRow(self, tableName, row, mutations, attributes):
+        """
+        Apply a series of mutations (updates/deletes) to a row in a
+        single transaction.  If an exception is thrown, then the
+        transaction is aborted.  Default current timestamp is used, and
+        all entries will have an identical timestamp.
+
+        Parameters:
+         - tableName: name of table
+         - row: row key
+         - mutations: list of mutation commands
+         - attributes: Mutation attributes
+
+        """
+        pass
+
+    def mutateRowTs(self, tableName, row, mutations, timestamp, attributes):
+        """
+        Apply a series of mutations (updates/deletes) to a row in a
+        single transaction.  If an exception is thrown, then the
+        transaction is aborted.  The specified timestamp is used, and
+        all entries will have an identical timestamp.
+
+        Parameters:
+         - tableName: name of table
+         - row: row key
+         - mutations: list of mutation commands
+         - timestamp: timestamp
+         - attributes: Mutation attributes
+
+        """
+        pass
+
+    def mutateRows(self, tableName, rowBatches, attributes):
+        """
+        Apply a series of batches (each a series of mutations on a single row)
+        in a single transaction.  If an exception is thrown, then the
+        transaction is aborted.  Default current timestamp is used, and
+        all entries will have an identical timestamp.
+
+        Parameters:
+         - tableName: name of table
+         - rowBatches: list of row batches
+         - attributes: Mutation attributes
+
+        """
+        pass
+
+    def mutateRowsTs(self, tableName, rowBatches, timestamp, attributes):
+        """
+        Apply a series of batches (each a series of mutations on a single row)
+        in a single transaction.  If an exception is thrown, then the
+        transaction is aborted.  The specified timestamp is used, and
+        all entries will have an identical timestamp.
+
+        Parameters:
+         - tableName: name of table
+         - rowBatches: list of row batches
+         - timestamp: timestamp
+         - attributes: Mutation attributes
+
+        """
+        pass
+
+    def atomicIncrement(self, tableName, row, column, value):
+        """
+        Atomically increment the column value specified.  Returns the next value post increment.
+
+        Parameters:
+         - tableName: name of table
+         - row: row to increment
+         - column: name of column
+         - value: amount to increment by
+
+        """
+        pass
+
+    def deleteAll(self, tableName, row, column, attributes):
+        """
+        Delete all cells that match the passed row and column.
+
+        Parameters:
+         - tableName: name of table
+         - row: Row to update
+         - column: name of column whose value is to be deleted
+         - attributes: Delete attributes
+
+        """
+        pass
+
+    def deleteAllTs(self, tableName, row, column, timestamp, attributes):
+        """
+        Delete all cells that match the passed row and column and whose
+        timestamp is equal-to or older than the passed timestamp.
+
+        Parameters:
+         - tableName: name of table
+         - row: Row to update
+         - column: name of column whose value is to be deleted
+         - timestamp: timestamp
+         - attributes: Delete attributes
+
+        """
+        pass
+
+    def deleteAllRow(self, tableName, row, attributes):
+        """
+        Completely delete the row's cells.
+
+        Parameters:
+         - tableName: name of table
+         - row: key of the row to be completely deleted.
+         - attributes: Delete attributes
+
+        """
+        pass
+
+    def increment(self, increment):
+        """
+        Increment a cell by the ammount.
+        Increments can be applied async if hbase.regionserver.thrift.coalesceIncrement is set to true.
+        False is the default.  Turn to true if you need the extra performance and can accept some
+        data loss if a thrift server dies with increments still in the queue.
+
+        Parameters:
+         - increment: The single increment to apply
+
+        """
+        pass
+
+    def incrementRows(self, increments):
+        """
+        Parameters:
+         - increments: The list of increments
+
+        """
+        pass
+
+    def deleteAllRowTs(self, tableName, row, timestamp, attributes):
+        """
+        Completely delete the row's cells marked with a timestamp
+        equal-to or older than the passed timestamp.
+
+        Parameters:
+         - tableName: name of table
+         - row: key of the row to be completely deleted.
+         - timestamp: timestamp
+         - attributes: Delete attributes
+
+        """
+        pass
+
+    def scannerOpenWithScan(self, tableName, scan, attributes):
+        """
+        Get a scanner on the current table, using the Scan instance
+        for the scan parameters.
+
+        Parameters:
+         - tableName: name of table
+         - scan: Scan instance
+         - attributes: Scan attributes
+
+        """
+        pass
+
+    def scannerOpen(self, tableName, startRow, columns, attributes):
+        """
+        Get a scanner on the current table starting at the specified row and
+        ending at the last row in the table.  Return the specified columns.
+
+        @return scanner id to be used with other scanner procedures
+
+        Parameters:
+         - tableName: name of table
+         - startRow: Starting row in table to scan.
+        Send "" (empty string) to start at the first row.
+         - columns: columns to scan. If column name is a column family, all
+        columns of the specified column family are returned. It's also possible
+        to pass a regex in the column qualifier.
+         - attributes: Scan attributes
+
+        """
+        pass
+
+    def scannerOpenWithStop(self, tableName, startRow, stopRow, columns, attributes):
+        """
+        Get a scanner on the current table starting and stopping at the
+        specified rows.  ending at the last row in the table.  Return the
+        specified columns.
+
+        @return scanner id to be used with other scanner procedures
+
+        Parameters:
+         - tableName: name of table
+         - startRow: Starting row in table to scan.
+        Send "" (empty string) to start at the first row.
+         - stopRow: row to stop scanning on. This row is *not* included in the
+        scanner's results
+         - columns: columns to scan. If column name is a column family, all
+        columns of the specified column family are returned. It's also possible
+        to pass a regex in the column qualifier.
+         - attributes: Scan attributes
+
+        """
+        pass
+
+    def scannerOpenWithPrefix(self, tableName, startAndPrefix, columns, attributes):
+        """
+        Open a scanner for a given prefix.  That is all rows will have the specified
+        prefix. No other rows will be returned.
+
+        @return scanner id to use with other scanner calls
+
+        Parameters:
+         - tableName: name of table
+         - startAndPrefix: the prefix (and thus start row) of the keys you want
+         - columns: the columns you want returned
+         - attributes: Scan attributes
+
+        """
+        pass
+
+    def scannerOpenTs(self, tableName, startRow, columns, timestamp, attributes):
+        """
+        Get a scanner on the current table starting at the specified row and
+        ending at the last row in the table.  Return the specified columns.
+        Only values with the specified timestamp are returned.
+
+        @return scanner id to be used with other scanner procedures
+
+        Parameters:
+         - tableName: name of table
+         - startRow: Starting row in table to scan.
+        Send "" (empty string) to start at the first row.
+         - columns: columns to scan. If column name is a column family, all
+        columns of the specified column family are returned. It's also possible
+        to pass a regex in the column qualifier.
+         - timestamp: timestamp
+         - attributes: Scan attributes
+
+        """
+        pass
+
+    def scannerOpenWithStopTs(self, tableName, startRow, stopRow, columns, timestamp, attributes):
+        """
+        Get a scanner on the current table starting and stopping at the
+        specified rows.  ending at the last row in the table.  Return the
+        specified columns.  Only values with the specified timestamp are
+        returned.
+
+        @return scanner id to be used with other scanner procedures
+
+        Parameters:
+         - tableName: name of table
+         - startRow: Starting row in table to scan.
+        Send "" (empty string) to start at the first row.
+         - stopRow: row to stop scanning on. This row is *not* included in the
+        scanner's results
+         - columns: columns to scan. If column name is a column family, all
+        columns of the specified column family are returned. It's also possible
+        to pass a regex in the column qualifier.
+         - timestamp: timestamp
+         - attributes: Scan attributes
+
+        """
+        pass
+
+    def scannerGet(self, id):
+        """
+        Returns the scanner's current row value and advances to the next
+        row in the table.  When there are no more rows in the table, or a key
+        greater-than-or-equal-to the scanner's specified stopRow is reached,
+        an empty list is returned.
+
+        @return a TRowResult containing the current row and a map of the columns to TCells.
+
+        @throws IllegalArgument if ScannerID is invalid
+
+        @throws NotFound when the scanner reaches the end
+
+        Parameters:
+         - id: id of a scanner returned by scannerOpen
+
+        """
+        pass
+
+    def scannerGetList(self, id, nbRows):
+        """
+        Returns, starting at the scanner's current row value nbRows worth of
+        rows and advances to the next row in the table.  When there are no more
+        rows in the table, or a key greater-than-or-equal-to the scanner's
+        specified stopRow is reached,  an empty list is returned.
+
+        @return a TRowResult containing the current row and a map of the columns to TCells.
+
+        @throws IllegalArgument if ScannerID is invalid
+
+        @throws NotFound when the scanner reaches the end
+
+        Parameters:
+         - id: id of a scanner returned by scannerOpen
+         - nbRows: number of results to return
+
+        """
+        pass
+
+    def scannerClose(self, id):
+        """
+        Closes the server-state associated with an open scanner.
+
+        @throws IllegalArgument if ScannerID is invalid
+
+        Parameters:
+         - id: id of a scanner returned by scannerOpen
+
+        """
+        pass
+
+    def getRegionInfo(self, row):
+        """
+        Get the regininfo for the specified row. It scans
+        the metatable to find region's start and end keys.
+
+        @return value for specified row/column
+
+        Parameters:
+         - row: row key
+
+        """
+        pass
+
+    def append(self, append):
+        """
+        Appends values to one or more columns within a single row.
+
+        @return values of columns after the append operation.
+
+        Parameters:
+         - append: The single append operation to apply
+
+        """
+        pass
+
+    def checkAndPut(self, tableName, row, column, value, mput, attributes):
+        """
+        Atomically checks if a row/family/qualifier value matches the expected
+        value. If it does, it adds the corresponding mutation operation for put.
+
+        @return true if the new put was executed, false otherwise
+
+        Parameters:
+         - tableName: name of table
+         - row: row key
+         - column: column name
+         - value: the expected value for the column parameter, if not
+        provided the check is for the non-existence of the
+        column in question
+         - mput: mutation for the put
+         - attributes: Mutation attributes
+
+        """
+        pass
+
+    def getThriftServerType(self):
+        """
+        Get the type of this thrift server.
+
+        @return the type of this thrift server
+
+        """
+        pass
+
+
+class Client(Iface):
+    def __init__(self, iprot, oprot=None):
+        self._iprot = self._oprot = iprot
+        if oprot is not None:
+            self._oprot = oprot
+        self._seqid = 0
+
+    def enableTable(self, tableName):
+        """
+        Brings a table on-line (enables it)
+
+        Parameters:
+         - tableName: name of the table
+
+        """
+        self.send_enableTable(tableName)
+        self.recv_enableTable()
+
+    def send_enableTable(self, tableName):
+        self._oprot.writeMessageBegin('enableTable', TMessageType.CALL, self._seqid)
+        args = enableTable_args()
+        args.tableName = tableName
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_enableTable(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = enableTable_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.io is not None:
+            raise result.io
+        return
+
+    def disableTable(self, tableName):
+        """
+        Disables a table (takes it off-line) If it is being served, the master
+        will tell the servers to stop serving it.
+
+        Parameters:
+         - tableName: name of the table
+
+        """
+        self.send_disableTable(tableName)
+        self.recv_disableTable()
+
+    def send_disableTable(self, tableName):
+        self._oprot.writeMessageBegin('disableTable', TMessageType.CALL, self._seqid)
+        args = disableTable_args()
+        args.tableName = tableName
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_disableTable(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = disableTable_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.io is not None:
+            raise result.io
+        return
+
+    def isTableEnabled(self, tableName):
+        """
+        @return true if table is on-line
+
+        Parameters:
+         - tableName: name of the table to check
+
+        """
+        self.send_isTableEnabled(tableName)
+        return self.recv_isTableEnabled()
+
+    def send_isTableEnabled(self, tableName):
+        self._oprot.writeMessageBegin('isTableEnabled', TMessageType.CALL, self._seqid)
+        args = isTableEnabled_args()
+        args.tableName = tableName
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_isTableEnabled(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = isTableEnabled_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "isTableEnabled failed: unknown result")
+
+    def compact(self, tableNameOrRegionName):
+        """
+        Parameters:
+         - tableNameOrRegionName
+
+        """
+        self.send_compact(tableNameOrRegionName)
+        self.recv_compact()
+
+    def send_compact(self, tableNameOrRegionName):
+        self._oprot.writeMessageBegin('compact', TMessageType.CALL, self._seqid)
+        args = compact_args()
+        args.tableNameOrRegionName = tableNameOrRegionName
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_compact(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = compact_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.io is not None:
+            raise result.io
+        return
+
+    def majorCompact(self, tableNameOrRegionName):
+        """
+        Parameters:
+         - tableNameOrRegionName
+
+        """
+        self.send_majorCompact(tableNameOrRegionName)
+        self.recv_majorCompact()
+
+    def send_majorCompact(self, tableNameOrRegionName):
+        self._oprot.writeMessageBegin('majorCompact', TMessageType.CALL, self._seqid)
+        args = majorCompact_args()
+        args.tableNameOrRegionName = tableNameOrRegionName
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_majorCompact(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = majorCompact_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.io is not None:
+            raise result.io
+        return
+
+    def getTableNames(self):
+        """
+        List all the userspace tables.
+
+        @return returns a list of names
+
+        """
+        self.send_getTableNames()
+        return self.recv_getTableNames()
+
+    def send_getTableNames(self):
+        self._oprot.writeMessageBegin('getTableNames', TMessageType.CALL, self._seqid)
+        args = getTableNames_args()
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getTableNames(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getTableNames_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getTableNames failed: unknown result")
+
+    def getColumnDescriptors(self, tableName):
+        """
+        List all the column families assoicated with a table.
+
+        @return list of column family descriptors
+
+        Parameters:
+         - tableName: table name
+
+        """
+        self.send_getColumnDescriptors(tableName)
+        return self.recv_getColumnDescriptors()
+
+    def send_getColumnDescriptors(self, tableName):
+        self._oprot.writeMessageBegin('getColumnDescriptors', TMessageType.CALL, self._seqid)
+        args = getColumnDescriptors_args()
+        args.tableName = tableName
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getColumnDescriptors(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getColumnDescriptors_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getColumnDescriptors failed: unknown result")
+
+    def getTableRegions(self, tableName):
+        """
+        List the regions associated with a table.
+
+        @return list of region descriptors
+
+        Parameters:
+         - tableName: table name
+
+        """
+        self.send_getTableRegions(tableName)
+        return self.recv_getTableRegions()
+
+    def send_getTableRegions(self, tableName):
+        self._oprot.writeMessageBegin('getTableRegions', TMessageType.CALL, self._seqid)
+        args = getTableRegions_args()
+        args.tableName = tableName
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getTableRegions(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getTableRegions_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getTableRegions failed: unknown result")
+
+    def createTable(self, tableName, columnFamilies):
+        """
+        Create a table with the specified column families.  The name
+        field for each ColumnDescriptor must be set and must end in a
+        colon (:). All other fields are optional and will get default
+        values if not explicitly specified.
+
+        @throws IllegalArgument if an input parameter is invalid
+
+        @throws AlreadyExists if the table name already exists
+
+        Parameters:
+         - tableName: name of table to create
+         - columnFamilies: list of column family descriptors
+
+        """
+        self.send_createTable(tableName, columnFamilies)
+        self.recv_createTable()
+
+    def send_createTable(self, tableName, columnFamilies):
+        self._oprot.writeMessageBegin('createTable', TMessageType.CALL, self._seqid)
+        args = createTable_args()
+        args.tableName = tableName
+        args.columnFamilies = columnFamilies
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_createTable(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = createTable_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.io is not None:
+            raise result.io
+        if result.ia is not None:
+            raise result.ia
+        if result.exist is not None:
+            raise result.exist
+        return
+
+    def deleteTable(self, tableName):
+        """
+        Deletes a table
+
+        @throws IOError if table doesn't exist on server or there was some other
+        problem
+
+        Parameters:
+         - tableName: name of table to delete
+
+        """
+        self.send_deleteTable(tableName)
+        self.recv_deleteTable()
+
+    def send_deleteTable(self, tableName):
+        self._oprot.writeMessageBegin('deleteTable', TMessageType.CALL, self._seqid)
+        args = deleteTable_args()
+        args.tableName = tableName
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteTable(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteTable_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.io is not None:
+            raise result.io
+        return
+
+    def get(self, tableName, row, column, attributes):
+        """
+        Get a single TCell for the specified table, row, and column at the
+        latest timestamp. Returns an empty list if no such value exists.
+
+        @return value for specified row/column
+
+        Parameters:
+         - tableName: name of table
+         - row: row key
+         - column: column name
+         - attributes: Get attributes
+
+        """
+        self.send_get(tableName, row, column, attributes)
+        return self.recv_get()
+
+    def send_get(self, tableName, row, column, attributes):
+        self._oprot.writeMessageBegin('get', TMessageType.CALL, self._seqid)
+        args = get_args()
+        args.tableName = tableName
+        args.row = row
+        args.column = column
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_get(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = get_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "get failed: unknown result")
+
+    def getVer(self, tableName, row, column, numVersions, attributes):
+        """
+        Get the specified number of versions for the specified table,
+        row, and column.
+
+        @return list of cells for specified row/column
+
+        Parameters:
+         - tableName: name of table
+         - row: row key
+         - column: column name
+         - numVersions: number of versions to retrieve
+         - attributes: Get attributes
+
+        """
+        self.send_getVer(tableName, row, column, numVersions, attributes)
+        return self.recv_getVer()
+
+    def send_getVer(self, tableName, row, column, numVersions, attributes):
+        self._oprot.writeMessageBegin('getVer', TMessageType.CALL, self._seqid)
+        args = getVer_args()
+        args.tableName = tableName
+        args.row = row
+        args.column = column
+        args.numVersions = numVersions
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getVer(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getVer_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getVer failed: unknown result")
+
+    def getVerTs(self, tableName, row, column, timestamp, numVersions, attributes):
+        """
+        Get the specified number of versions for the specified table,
+        row, and column.  Only versions less than or equal to the specified
+        timestamp will be returned.
+
+        @return list of cells for specified row/column
+
+        Parameters:
+         - tableName: name of table
+         - row: row key
+         - column: column name
+         - timestamp: timestamp
+         - numVersions: number of versions to retrieve
+         - attributes: Get attributes
+
+        """
+        self.send_getVerTs(tableName, row, column, timestamp, numVersions, attributes)
+        return self.recv_getVerTs()
+
+    def send_getVerTs(self, tableName, row, column, timestamp, numVersions, attributes):
+        self._oprot.writeMessageBegin('getVerTs', TMessageType.CALL, self._seqid)
+        args = getVerTs_args()
+        args.tableName = tableName
+        args.row = row
+        args.column = column
+        args.timestamp = timestamp
+        args.numVersions = numVersions
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getVerTs(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getVerTs_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getVerTs failed: unknown result")
+
+    def getRow(self, tableName, row, attributes):
+        """
+        Get all the data for the specified table and row at the latest
+        timestamp. Returns an empty list if the row does not exist.
+
+        @return TRowResult containing the row and map of columns to TCells
+
+        Parameters:
+         - tableName: name of table
+         - row: row key
+         - attributes: Get attributes
+
+        """
+        self.send_getRow(tableName, row, attributes)
+        return self.recv_getRow()
+
+    def send_getRow(self, tableName, row, attributes):
+        self._oprot.writeMessageBegin('getRow', TMessageType.CALL, self._seqid)
+        args = getRow_args()
+        args.tableName = tableName
+        args.row = row
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getRow(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getRow_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getRow failed: unknown result")
+
+    def getRowWithColumns(self, tableName, row, columns, attributes):
+        """
+        Get the specified columns for the specified table and row at the latest
+        timestamp. Returns an empty list if the row does not exist.
+
+        @return TRowResult containing the row and map of columns to TCells
+
+        Parameters:
+         - tableName: name of table
+         - row: row key
+         - columns: List of columns to return, null for all columns
+         - attributes: Get attributes
+
+        """
+        self.send_getRowWithColumns(tableName, row, columns, attributes)
+        return self.recv_getRowWithColumns()
+
+    def send_getRowWithColumns(self, tableName, row, columns, attributes):
+        self._oprot.writeMessageBegin('getRowWithColumns', TMessageType.CALL, self._seqid)
+        args = getRowWithColumns_args()
+        args.tableName = tableName
+        args.row = row
+        args.columns = columns
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getRowWithColumns(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getRowWithColumns_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getRowWithColumns failed: unknown result")
+
+    def getRowTs(self, tableName, row, timestamp, attributes):
+        """
+        Get all the data for the specified table and row at the specified
+        timestamp. Returns an empty list if the row does not exist.
+
+        @return TRowResult containing the row and map of columns to TCells
+
+        Parameters:
+         - tableName: name of the table
+         - row: row key
+         - timestamp: timestamp
+         - attributes: Get attributes
+
+        """
+        self.send_getRowTs(tableName, row, timestamp, attributes)
+        return self.recv_getRowTs()
+
+    def send_getRowTs(self, tableName, row, timestamp, attributes):
+        self._oprot.writeMessageBegin('getRowTs', TMessageType.CALL, self._seqid)
+        args = getRowTs_args()
+        args.tableName = tableName
+        args.row = row
+        args.timestamp = timestamp
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getRowTs(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getRowTs_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getRowTs failed: unknown result")
+
+    def getRowWithColumnsTs(self, tableName, row, columns, timestamp, attributes):
+        """
+        Get the specified columns for the specified table and row at the specified
+        timestamp. Returns an empty list if the row does not exist.
+
+        @return TRowResult containing the row and map of columns to TCells
+
+        Parameters:
+         - tableName: name of table
+         - row: row key
+         - columns: List of columns to return, null for all columns
+         - timestamp
+         - attributes: Get attributes
+
+        """
+        self.send_getRowWithColumnsTs(tableName, row, columns, timestamp, attributes)
+        return self.recv_getRowWithColumnsTs()
+
+    def send_getRowWithColumnsTs(self, tableName, row, columns, timestamp, attributes):
+        self._oprot.writeMessageBegin('getRowWithColumnsTs', TMessageType.CALL, self._seqid)
+        args = getRowWithColumnsTs_args()
+        args.tableName = tableName
+        args.row = row
+        args.columns = columns
+        args.timestamp = timestamp
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getRowWithColumnsTs(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getRowWithColumnsTs_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getRowWithColumnsTs failed: unknown result")
+
+    def getRows(self, tableName, rows, attributes):
+        """
+        Get all the data for the specified table and rows at the latest
+        timestamp. Returns an empty list if no rows exist.
+
+        @return TRowResult containing the rows and map of columns to TCells
+
+        Parameters:
+         - tableName: name of table
+         - rows: row keys
+         - attributes: Get attributes
+
+        """
+        self.send_getRows(tableName, rows, attributes)
+        return self.recv_getRows()
+
+    def send_getRows(self, tableName, rows, attributes):
+        self._oprot.writeMessageBegin('getRows', TMessageType.CALL, self._seqid)
+        args = getRows_args()
+        args.tableName = tableName
+        args.rows = rows
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getRows(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getRows_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getRows failed: unknown result")
+
+    def getRowsWithColumns(self, tableName, rows, columns, attributes):
+        """
+        Get the specified columns for the specified table and rows at the latest
+        timestamp. Returns an empty list if no rows exist.
+
+        @return TRowResult containing the rows and map of columns to TCells
+
+        Parameters:
+         - tableName: name of table
+         - rows: row keys
+         - columns: List of columns to return, null for all columns
+         - attributes: Get attributes
+
+        """
+        self.send_getRowsWithColumns(tableName, rows, columns, attributes)
+        return self.recv_getRowsWithColumns()
+
+    def send_getRowsWithColumns(self, tableName, rows, columns, attributes):
+        self._oprot.writeMessageBegin('getRowsWithColumns', TMessageType.CALL, self._seqid)
+        args = getRowsWithColumns_args()
+        args.tableName = tableName
+        args.rows = rows
+        args.columns = columns
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getRowsWithColumns(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getRowsWithColumns_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getRowsWithColumns failed: unknown result")
+
+    def getRowsTs(self, tableName, rows, timestamp, attributes):
+        """
+        Get all the data for the specified table and rows at the specified
+        timestamp. Returns an empty list if no rows exist.
+
+        @return TRowResult containing the rows and map of columns to TCells
+
+        Parameters:
+         - tableName: name of the table
+         - rows: row keys
+         - timestamp: timestamp
+         - attributes: Get attributes
+
+        """
+        self.send_getRowsTs(tableName, rows, timestamp, attributes)
+        return self.recv_getRowsTs()
+
+    def send_getRowsTs(self, tableName, rows, timestamp, attributes):
+        self._oprot.writeMessageBegin('getRowsTs', TMessageType.CALL, self._seqid)
+        args = getRowsTs_args()
+        args.tableName = tableName
+        args.rows = rows
+        args.timestamp = timestamp
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getRowsTs(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getRowsTs_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getRowsTs failed: unknown result")
+
+    def getRowsWithColumnsTs(self, tableName, rows, columns, timestamp, attributes):
+        """
+        Get the specified columns for the specified table and rows at the specified
+        timestamp. Returns an empty list if no rows exist.
+
+        @return TRowResult containing the rows and map of columns to TCells
+
+        Parameters:
+         - tableName: name of table
+         - rows: row keys
+         - columns: List of columns to return, null for all columns
+         - timestamp
+         - attributes: Get attributes
+
+        """
+        self.send_getRowsWithColumnsTs(tableName, rows, columns, timestamp, attributes)
+        return self.recv_getRowsWithColumnsTs()
+
+    def send_getRowsWithColumnsTs(self, tableName, rows, columns, timestamp, attributes):
+        self._oprot.writeMessageBegin('getRowsWithColumnsTs', TMessageType.CALL, self._seqid)
+        args = getRowsWithColumnsTs_args()
+        args.tableName = tableName
+        args.rows = rows
+        args.columns = columns
+        args.timestamp = timestamp
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getRowsWithColumnsTs(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getRowsWithColumnsTs_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getRowsWithColumnsTs failed: unknown result")
+
+    def mutateRow(self, tableName, row, mutations, attributes):
+        """
+        Apply a series of mutations (updates/deletes) to a row in a
+        single transaction.  If an exception is thrown, then the
+        transaction is aborted.  Default current timestamp is used, and
+        all entries will have an identical timestamp.
+
+        Parameters:
+         - tableName: name of table
+         - row: row key
+         - mutations: list of mutation commands
+         - attributes: Mutation attributes
+
+        """
+        self.send_mutateRow(tableName, row, mutations, attributes)
+        self.recv_mutateRow()
+
+    def send_mutateRow(self, tableName, row, mutations, attributes):
+        self._oprot.writeMessageBegin('mutateRow', TMessageType.CALL, self._seqid)
+        args = mutateRow_args()
+        args.tableName = tableName
+        args.row = row
+        args.mutations = mutations
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_mutateRow(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = mutateRow_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.io is not None:
+            raise result.io
+        if result.ia is not None:
+            raise result.ia
+        return
+
+    def mutateRowTs(self, tableName, row, mutations, timestamp, attributes):
+        """
+        Apply a series of mutations (updates/deletes) to a row in a
+        single transaction.  If an exception is thrown, then the
+        transaction is aborted.  The specified timestamp is used, and
+        all entries will have an identical timestamp.
+
+        Parameters:
+         - tableName: name of table
+         - row: row key
+         - mutations: list of mutation commands
+         - timestamp: timestamp
+         - attributes: Mutation attributes
+
+        """
+        self.send_mutateRowTs(tableName, row, mutations, timestamp, attributes)
+        self.recv_mutateRowTs()
+
+    def send_mutateRowTs(self, tableName, row, mutations, timestamp, attributes):
+        self._oprot.writeMessageBegin('mutateRowTs', TMessageType.CALL, self._seqid)
+        args = mutateRowTs_args()
+        args.tableName = tableName
+        args.row = row
+        args.mutations = mutations
+        args.timestamp = timestamp
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_mutateRowTs(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = mutateRowTs_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.io is not None:
+            raise result.io
+        if result.ia is not None:
+            raise result.ia
+        return
+
+    def mutateRows(self, tableName, rowBatches, attributes):
+        """
+        Apply a series of batches (each a series of mutations on a single row)
+        in a single transaction.  If an exception is thrown, then the
+        transaction is aborted.  Default current timestamp is used, and
+        all entries will have an identical timestamp.
+
+        Parameters:
+         - tableName: name of table
+         - rowBatches: list of row batches
+         - attributes: Mutation attributes
+
+        """
+        self.send_mutateRows(tableName, rowBatches, attributes)
+        self.recv_mutateRows()
+
+    def send_mutateRows(self, tableName, rowBatches, attributes):
+        self._oprot.writeMessageBegin('mutateRows', TMessageType.CALL, self._seqid)
+        args = mutateRows_args()
+        args.tableName = tableName
+        args.rowBatches = rowBatches
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_mutateRows(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = mutateRows_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.io is not None:
+            raise result.io
+        if result.ia is not None:
+            raise result.ia
+        return
+
+    def mutateRowsTs(self, tableName, rowBatches, timestamp, attributes):
+        """
+        Apply a series of batches (each a series of mutations on a single row)
+        in a single transaction.  If an exception is thrown, then the
+        transaction is aborted.  The specified timestamp is used, and
+        all entries will have an identical timestamp.
+
+        Parameters:
+         - tableName: name of table
+         - rowBatches: list of row batches
+         - timestamp: timestamp
+         - attributes: Mutation attributes
+
+        """
+        self.send_mutateRowsTs(tableName, rowBatches, timestamp, attributes)
+        self.recv_mutateRowsTs()
+
+    def send_mutateRowsTs(self, tableName, rowBatches, timestamp, attributes):
+        self._oprot.writeMessageBegin('mutateRowsTs', TMessageType.CALL, self._seqid)
+        args = mutateRowsTs_args()
+        args.tableName = tableName
+        args.rowBatches = rowBatches
+        args.timestamp = timestamp
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_mutateRowsTs(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = mutateRowsTs_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.io is not None:
+            raise result.io
+        if result.ia is not None:
+            raise result.ia
+        return
+
+    def atomicIncrement(self, tableName, row, column, value):
+        """
+        Atomically increment the column value specified.  Returns the next value post increment.
+
+        Parameters:
+         - tableName: name of table
+         - row: row to increment
+         - column: name of column
+         - value: amount to increment by
+
+        """
+        self.send_atomicIncrement(tableName, row, column, value)
+        return self.recv_atomicIncrement()
+
+    def send_atomicIncrement(self, tableName, row, column, value):
+        self._oprot.writeMessageBegin('atomicIncrement', TMessageType.CALL, self._seqid)
+        args = atomicIncrement_args()
+        args.tableName = tableName
+        args.row = row
+        args.column = column
+        args.value = value
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_atomicIncrement(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = atomicIncrement_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        if result.ia is not None:
+            raise result.ia
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "atomicIncrement failed: unknown result")
+
+    def deleteAll(self, tableName, row, column, attributes):
+        """
+        Delete all cells that match the passed row and column.
+
+        Parameters:
+         - tableName: name of table
+         - row: Row to update
+         - column: name of column whose value is to be deleted
+         - attributes: Delete attributes
+
+        """
+        self.send_deleteAll(tableName, row, column, attributes)
+        self.recv_deleteAll()
+
+    def send_deleteAll(self, tableName, row, column, attributes):
+        self._oprot.writeMessageBegin('deleteAll', TMessageType.CALL, self._seqid)
+        args = deleteAll_args()
+        args.tableName = tableName
+        args.row = row
+        args.column = column
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteAll(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteAll_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.io is not None:
+            raise result.io
+        return
+
+    def deleteAllTs(self, tableName, row, column, timestamp, attributes):
+        """
+        Delete all cells that match the passed row and column and whose
+        timestamp is equal-to or older than the passed timestamp.
+
+        Parameters:
+         - tableName: name of table
+         - row: Row to update
+         - column: name of column whose value is to be deleted
+         - timestamp: timestamp
+         - attributes: Delete attributes
+
+        """
+        self.send_deleteAllTs(tableName, row, column, timestamp, attributes)
+        self.recv_deleteAllTs()
+
+    def send_deleteAllTs(self, tableName, row, column, timestamp, attributes):
+        self._oprot.writeMessageBegin('deleteAllTs', TMessageType.CALL, self._seqid)
+        args = deleteAllTs_args()
+        args.tableName = tableName
+        args.row = row
+        args.column = column
+        args.timestamp = timestamp
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteAllTs(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteAllTs_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.io is not None:
+            raise result.io
+        return
+
+    def deleteAllRow(self, tableName, row, attributes):
+        """
+        Completely delete the row's cells.
+
+        Parameters:
+         - tableName: name of table
+         - row: key of the row to be completely deleted.
+         - attributes: Delete attributes
+
+        """
+        self.send_deleteAllRow(tableName, row, attributes)
+        self.recv_deleteAllRow()
+
+    def send_deleteAllRow(self, tableName, row, attributes):
+        self._oprot.writeMessageBegin('deleteAllRow', TMessageType.CALL, self._seqid)
+        args = deleteAllRow_args()
+        args.tableName = tableName
+        args.row = row
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteAllRow(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteAllRow_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.io is not None:
+            raise result.io
+        return
+
+    def increment(self, increment):
+        """
+        Increment a cell by the ammount.
+        Increments can be applied async if hbase.regionserver.thrift.coalesceIncrement is set to true.
+        False is the default.  Turn to true if you need the extra performance and can accept some
+        data loss if a thrift server dies with increments still in the queue.
+
+        Parameters:
+         - increment: The single increment to apply
+
+        """
+        self.send_increment(increment)
+        self.recv_increment()
+
+    def send_increment(self, increment):
+        self._oprot.writeMessageBegin('increment', TMessageType.CALL, self._seqid)
+        args = increment_args()
+        args.increment = increment
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_increment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = increment_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.io is not None:
+            raise result.io
+        return
+
+    def incrementRows(self, increments):
+        """
+        Parameters:
+         - increments: The list of increments
+
+        """
+        self.send_incrementRows(increments)
+        self.recv_incrementRows()
+
+    def send_incrementRows(self, increments):
+        self._oprot.writeMessageBegin('incrementRows', TMessageType.CALL, self._seqid)
+        args = incrementRows_args()
+        args.increments = increments
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_incrementRows(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = incrementRows_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.io is not None:
+            raise result.io
+        return
+
+    def deleteAllRowTs(self, tableName, row, timestamp, attributes):
+        """
+        Completely delete the row's cells marked with a timestamp
+        equal-to or older than the passed timestamp.
+
+        Parameters:
+         - tableName: name of table
+         - row: key of the row to be completely deleted.
+         - timestamp: timestamp
+         - attributes: Delete attributes
+
+        """
+        self.send_deleteAllRowTs(tableName, row, timestamp, attributes)
+        self.recv_deleteAllRowTs()
+
+    def send_deleteAllRowTs(self, tableName, row, timestamp, attributes):
+        self._oprot.writeMessageBegin('deleteAllRowTs', TMessageType.CALL, self._seqid)
+        args = deleteAllRowTs_args()
+        args.tableName = tableName
+        args.row = row
+        args.timestamp = timestamp
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteAllRowTs(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteAllRowTs_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.io is not None:
+            raise result.io
+        return
+
+    def scannerOpenWithScan(self, tableName, scan, attributes):
+        """
+        Get a scanner on the current table, using the Scan instance
+        for the scan parameters.
+
+        Parameters:
+         - tableName: name of table
+         - scan: Scan instance
+         - attributes: Scan attributes
+
+        """
+        self.send_scannerOpenWithScan(tableName, scan, attributes)
+        return self.recv_scannerOpenWithScan()
+
+    def send_scannerOpenWithScan(self, tableName, scan, attributes):
+        self._oprot.writeMessageBegin('scannerOpenWithScan', TMessageType.CALL, self._seqid)
+        args = scannerOpenWithScan_args()
+        args.tableName = tableName
+        args.scan = scan
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_scannerOpenWithScan(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = scannerOpenWithScan_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "scannerOpenWithScan failed: unknown result")
+
+    def scannerOpen(self, tableName, startRow, columns, attributes):
+        """
+        Get a scanner on the current table starting at the specified row and
+        ending at the last row in the table.  Return the specified columns.
+
+        @return scanner id to be used with other scanner procedures
+
+        Parameters:
+         - tableName: name of table
+         - startRow: Starting row in table to scan.
+        Send "" (empty string) to start at the first row.
+         - columns: columns to scan. If column name is a column family, all
+        columns of the specified column family are returned. It's also possible
+        to pass a regex in the column qualifier.
+         - attributes: Scan attributes
+
+        """
+        self.send_scannerOpen(tableName, startRow, columns, attributes)
+        return self.recv_scannerOpen()
+
+    def send_scannerOpen(self, tableName, startRow, columns, attributes):
+        self._oprot.writeMessageBegin('scannerOpen', TMessageType.CALL, self._seqid)
+        args = scannerOpen_args()
+        args.tableName = tableName
+        args.startRow = startRow
+        args.columns = columns
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_scannerOpen(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = scannerOpen_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "scannerOpen failed: unknown result")
+
+    def scannerOpenWithStop(self, tableName, startRow, stopRow, columns, attributes):
+        """
+        Get a scanner on the current table starting and stopping at the
+        specified rows.  ending at the last row in the table.  Return the
+        specified columns.
+
+        @return scanner id to be used with other scanner procedures
+
+        Parameters:
+         - tableName: name of table
+         - startRow: Starting row in table to scan.
+        Send "" (empty string) to start at the first row.
+         - stopRow: row to stop scanning on. This row is *not* included in the
+        scanner's results
+         - columns: columns to scan. If column name is a column family, all
+        columns of the specified column family are returned. It's also possible
+        to pass a regex in the column qualifier.
+         - attributes: Scan attributes
+
+        """
+        self.send_scannerOpenWithStop(tableName, startRow, stopRow, columns, attributes)
+        return self.recv_scannerOpenWithStop()
+
+    def send_scannerOpenWithStop(self, tableName, startRow, stopRow, columns, attributes):
+        self._oprot.writeMessageBegin('scannerOpenWithStop', TMessageType.CALL, self._seqid)
+        args = scannerOpenWithStop_args()
+        args.tableName = tableName
+        args.startRow = startRow
+        args.stopRow = stopRow
+        args.columns = columns
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_scannerOpenWithStop(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = scannerOpenWithStop_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "scannerOpenWithStop failed: unknown result")
+
+    def scannerOpenWithPrefix(self, tableName, startAndPrefix, columns, attributes):
+        """
+        Open a scanner for a given prefix.  That is all rows will have the specified
+        prefix. No other rows will be returned.
+
+        @return scanner id to use with other scanner calls
+
+        Parameters:
+         - tableName: name of table
+         - startAndPrefix: the prefix (and thus start row) of the keys you want
+         - columns: the columns you want returned
+         - attributes: Scan attributes
+
+        """
+        self.send_scannerOpenWithPrefix(tableName, startAndPrefix, columns, attributes)
+        return self.recv_scannerOpenWithPrefix()
+
+    def send_scannerOpenWithPrefix(self, tableName, startAndPrefix, columns, attributes):
+        self._oprot.writeMessageBegin('scannerOpenWithPrefix', TMessageType.CALL, self._seqid)
+        args = scannerOpenWithPrefix_args()
+        args.tableName = tableName
+        args.startAndPrefix = startAndPrefix
+        args.columns = columns
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_scannerOpenWithPrefix(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = scannerOpenWithPrefix_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "scannerOpenWithPrefix failed: unknown result")
+
+    def scannerOpenTs(self, tableName, startRow, columns, timestamp, attributes):
+        """
+        Get a scanner on the current table starting at the specified row and
+        ending at the last row in the table.  Return the specified columns.
+        Only values with the specified timestamp are returned.
+
+        @return scanner id to be used with other scanner procedures
+
+        Parameters:
+         - tableName: name of table
+         - startRow: Starting row in table to scan.
+        Send "" (empty string) to start at the first row.
+         - columns: columns to scan. If column name is a column family, all
+        columns of the specified column family are returned. It's also possible
+        to pass a regex in the column qualifier.
+         - timestamp: timestamp
+         - attributes: Scan attributes
+
+        """
+        self.send_scannerOpenTs(tableName, startRow, columns, timestamp, attributes)
+        return self.recv_scannerOpenTs()
+
+    def send_scannerOpenTs(self, tableName, startRow, columns, timestamp, attributes):
+        self._oprot.writeMessageBegin('scannerOpenTs', TMessageType.CALL, self._seqid)
+        args = scannerOpenTs_args()
+        args.tableName = tableName
+        args.startRow = startRow
+        args.columns = columns
+        args.timestamp = timestamp
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_scannerOpenTs(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = scannerOpenTs_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "scannerOpenTs failed: unknown result")
+
+    def scannerOpenWithStopTs(self, tableName, startRow, stopRow, columns, timestamp, attributes):
+        """
+        Get a scanner on the current table starting and stopping at the
+        specified rows.  ending at the last row in the table.  Return the
+        specified columns.  Only values with the specified timestamp are
+        returned.
+
+        @return scanner id to be used with other scanner procedures
+
+        Parameters:
+         - tableName: name of table
+         - startRow: Starting row in table to scan.
+        Send "" (empty string) to start at the first row.
+         - stopRow: row to stop scanning on. This row is *not* included in the
+        scanner's results
+         - columns: columns to scan. If column name is a column family, all
+        columns of the specified column family are returned. It's also possible
+        to pass a regex in the column qualifier.
+         - timestamp: timestamp
+         - attributes: Scan attributes
+
+        """
+        self.send_scannerOpenWithStopTs(tableName, startRow, stopRow, columns, timestamp, attributes)
+        return self.recv_scannerOpenWithStopTs()
+
+    def send_scannerOpenWithStopTs(self, tableName, startRow, stopRow, columns, timestamp, attributes):
+        self._oprot.writeMessageBegin('scannerOpenWithStopTs', TMessageType.CALL, self._seqid)
+        args = scannerOpenWithStopTs_args()
+        args.tableName = tableName
+        args.startRow = startRow
+        args.stopRow = stopRow
+        args.columns = columns
+        args.timestamp = timestamp
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_scannerOpenWithStopTs(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = scannerOpenWithStopTs_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "scannerOpenWithStopTs failed: unknown result")
+
+    def scannerGet(self, id):
+        """
+        Returns the scanner's current row value and advances to the next
+        row in the table.  When there are no more rows in the table, or a key
+        greater-than-or-equal-to the scanner's specified stopRow is reached,
+        an empty list is returned.
+
+        @return a TRowResult containing the current row and a map of the columns to TCells.
+
+        @throws IllegalArgument if ScannerID is invalid
+
+        @throws NotFound when the scanner reaches the end
+
+        Parameters:
+         - id: id of a scanner returned by scannerOpen
+
+        """
+        self.send_scannerGet(id)
+        return self.recv_scannerGet()
+
+    def send_scannerGet(self, id):
+        self._oprot.writeMessageBegin('scannerGet', TMessageType.CALL, self._seqid)
+        args = scannerGet_args()
+        args.id = id
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_scannerGet(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = scannerGet_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        if result.ia is not None:
+            raise result.ia
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "scannerGet failed: unknown result")
+
+    def scannerGetList(self, id, nbRows):
+        """
+        Returns, starting at the scanner's current row value nbRows worth of
+        rows and advances to the next row in the table.  When there are no more
+        rows in the table, or a key greater-than-or-equal-to the scanner's
+        specified stopRow is reached,  an empty list is returned.
+
+        @return a TRowResult containing the current row and a map of the columns to TCells.
+
+        @throws IllegalArgument if ScannerID is invalid
+
+        @throws NotFound when the scanner reaches the end
+
+        Parameters:
+         - id: id of a scanner returned by scannerOpen
+         - nbRows: number of results to return
+
+        """
+        self.send_scannerGetList(id, nbRows)
+        return self.recv_scannerGetList()
+
+    def send_scannerGetList(self, id, nbRows):
+        self._oprot.writeMessageBegin('scannerGetList', TMessageType.CALL, self._seqid)
+        args = scannerGetList_args()
+        args.id = id
+        args.nbRows = nbRows
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_scannerGetList(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = scannerGetList_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        if result.ia is not None:
+            raise result.ia
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "scannerGetList failed: unknown result")
+
+    def scannerClose(self, id):
+        """
+        Closes the server-state associated with an open scanner.
+
+        @throws IllegalArgument if ScannerID is invalid
+
+        Parameters:
+         - id: id of a scanner returned by scannerOpen
+
+        """
+        self.send_scannerClose(id)
+        self.recv_scannerClose()
+
+    def send_scannerClose(self, id):
+        self._oprot.writeMessageBegin('scannerClose', TMessageType.CALL, self._seqid)
+        args = scannerClose_args()
+        args.id = id
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_scannerClose(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = scannerClose_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.io is not None:
+            raise result.io
+        if result.ia is not None:
+            raise result.ia
+        return
+
+    def getRegionInfo(self, row):
+        """
+        Get the regininfo for the specified row. It scans
+        the metatable to find region's start and end keys.
+
+        @return value for specified row/column
+
+        Parameters:
+         - row: row key
+
+        """
+        self.send_getRegionInfo(row)
+        return self.recv_getRegionInfo()
+
+    def send_getRegionInfo(self, row):
+        self._oprot.writeMessageBegin('getRegionInfo', TMessageType.CALL, self._seqid)
+        args = getRegionInfo_args()
+        args.row = row
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getRegionInfo(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getRegionInfo_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getRegionInfo failed: unknown result")
+
+    def append(self, append):
+        """
+        Appends values to one or more columns within a single row.
+
+        @return values of columns after the append operation.
+
+        Parameters:
+         - append: The single append operation to apply
+
+        """
+        self.send_append(append)
+        return self.recv_append()
+
+    def send_append(self, append):
+        self._oprot.writeMessageBegin('append', TMessageType.CALL, self._seqid)
+        args = append_args()
+        args.append = append
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_append(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = append_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "append failed: unknown result")
+
+    def checkAndPut(self, tableName, row, column, value, mput, attributes):
+        """
+        Atomically checks if a row/family/qualifier value matches the expected
+        value. If it does, it adds the corresponding mutation operation for put.
+
+        @return true if the new put was executed, false otherwise
+
+        Parameters:
+         - tableName: name of table
+         - row: row key
+         - column: column name
+         - value: the expected value for the column parameter, if not
+        provided the check is for the non-existence of the
+        column in question
+         - mput: mutation for the put
+         - attributes: Mutation attributes
+
+        """
+        self.send_checkAndPut(tableName, row, column, value, mput, attributes)
+        return self.recv_checkAndPut()
+
+    def send_checkAndPut(self, tableName, row, column, value, mput, attributes):
+        self._oprot.writeMessageBegin('checkAndPut', TMessageType.CALL, self._seqid)
+        args = checkAndPut_args()
+        args.tableName = tableName
+        args.row = row
+        args.column = column
+        args.value = value
+        args.mput = mput
+        args.attributes = attributes
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_checkAndPut(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = checkAndPut_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        if result.io is not None:
+            raise result.io
+        if result.ia is not None:
+            raise result.ia
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "checkAndPut failed: unknown result")
+
+    def getThriftServerType(self):
+        """
+        Get the type of this thrift server.
+
+        @return the type of this thrift server
+
+        """
+        self.send_getThriftServerType()
+        return self.recv_getThriftServerType()
+
+    def send_getThriftServerType(self):
+        self._oprot.writeMessageBegin('getThriftServerType', TMessageType.CALL, self._seqid)
+        args = getThriftServerType_args()
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getThriftServerType(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getThriftServerType_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.success is not None:
+            return result.success
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getThriftServerType failed: unknown result")
+
+
+class Processor(Iface, TProcessor):
+    def __init__(self, handler):
+        self._handler = handler
+        self._processMap = {}
+        self._processMap["enableTable"] = Processor.process_enableTable
+        self._processMap["disableTable"] = Processor.process_disableTable
+        self._processMap["isTableEnabled"] = Processor.process_isTableEnabled
+        self._processMap["compact"] = Processor.process_compact
+        self._processMap["majorCompact"] = Processor.process_majorCompact
+        self._processMap["getTableNames"] = Processor.process_getTableNames
+        self._processMap["getColumnDescriptors"] = Processor.process_getColumnDescriptors
+        self._processMap["getTableRegions"] = Processor.process_getTableRegions
+        self._processMap["createTable"] = Processor.process_createTable
+        self._processMap["deleteTable"] = Processor.process_deleteTable
+        self._processMap["get"] = Processor.process_get
+        self._processMap["getVer"] = Processor.process_getVer
+        self._processMap["getVerTs"] = Processor.process_getVerTs
+        self._processMap["getRow"] = Processor.process_getRow
+        self._processMap["getRowWithColumns"] = Processor.process_getRowWithColumns
+        self._processMap["getRowTs"] = Processor.process_getRowTs
+        self._processMap["getRowWithColumnsTs"] = Processor.process_getRowWithColumnsTs
+        self._processMap["getRows"] = Processor.process_getRows
+        self._processMap["getRowsWithColumns"] = Processor.process_getRowsWithColumns
+        self._processMap["getRowsTs"] = Processor.process_getRowsTs
+        self._processMap["getRowsWithColumnsTs"] = Processor.process_getRowsWithColumnsTs
+        self._processMap["mutateRow"] = Processor.process_mutateRow
+        self._processMap["mutateRowTs"] = Processor.process_mutateRowTs
+        self._processMap["mutateRows"] = Processor.process_mutateRows
+        self._processMap["mutateRowsTs"] = Processor.process_mutateRowsTs
+        self._processMap["atomicIncrement"] = Processor.process_atomicIncrement
+        self._processMap["deleteAll"] = Processor.process_deleteAll
+        self._processMap["deleteAllTs"] = Processor.process_deleteAllTs
+        self._processMap["deleteAllRow"] = Processor.process_deleteAllRow
+        self._processMap["increment"] = Processor.process_increment
+        self._processMap["incrementRows"] = Processor.process_incrementRows
+        self._processMap["deleteAllRowTs"] = Processor.process_deleteAllRowTs
+        self._processMap["scannerOpenWithScan"] = Processor.process_scannerOpenWithScan
+        self._processMap["scannerOpen"] = Processor.process_scannerOpen
+        self._processMap["scannerOpenWithStop"] = Processor.process_scannerOpenWithStop
+        self._processMap["scannerOpenWithPrefix"] = Processor.process_scannerOpenWithPrefix
+        self._processMap["scannerOpenTs"] = Processor.process_scannerOpenTs
+        self._processMap["scannerOpenWithStopTs"] = Processor.process_scannerOpenWithStopTs
+        self._processMap["scannerGet"] = Processor.process_scannerGet
+        self._processMap["scannerGetList"] = Processor.process_scannerGetList
+        self._processMap["scannerClose"] = Processor.process_scannerClose
+        self._processMap["getRegionInfo"] = Processor.process_getRegionInfo
+        self._processMap["append"] = Processor.process_append
+        self._processMap["checkAndPut"] = Processor.process_checkAndPut
+        self._processMap["getThriftServerType"] = Processor.process_getThriftServerType
+
+    def process(self, iprot, oprot):
+        (name, type, seqid) = iprot.readMessageBegin()
+        if name not in self._processMap:
+            iprot.skip(TType.STRUCT)
+            iprot.readMessageEnd()
+            x = TApplicationException(TApplicationException.UNKNOWN_METHOD, 'Unknown function %s' % (name))
+            oprot.writeMessageBegin(name, TMessageType.EXCEPTION, seqid)
+            x.write(oprot)
+            oprot.writeMessageEnd()
+            oprot.trans.flush()
+            return
+        else:
+            self._processMap[name](self, seqid, iprot, oprot)
+        return True
+
+    def process_enableTable(self, seqid, iprot, oprot):
+        args = enableTable_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = enableTable_result()
+        try:
+            self._handler.enableTable(args.tableName)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("enableTable", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_disableTable(self, seqid, iprot, oprot):
+        args = disableTable_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = disableTable_result()
+        try:
+            self._handler.disableTable(args.tableName)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("disableTable", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_isTableEnabled(self, seqid, iprot, oprot):
+        args = isTableEnabled_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = isTableEnabled_result()
+        try:
+            result.success = self._handler.isTableEnabled(args.tableName)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("isTableEnabled", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_compact(self, seqid, iprot, oprot):
+        args = compact_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = compact_result()
+        try:
+            self._handler.compact(args.tableNameOrRegionName)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("compact", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_majorCompact(self, seqid, iprot, oprot):
+        args = majorCompact_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = majorCompact_result()
+        try:
+            self._handler.majorCompact(args.tableNameOrRegionName)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("majorCompact", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getTableNames(self, seqid, iprot, oprot):
+        args = getTableNames_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getTableNames_result()
+        try:
+            result.success = self._handler.getTableNames()
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("getTableNames", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getColumnDescriptors(self, seqid, iprot, oprot):
+        args = getColumnDescriptors_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getColumnDescriptors_result()
+        try:
+            result.success = self._handler.getColumnDescriptors(args.tableName)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("getColumnDescriptors", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getTableRegions(self, seqid, iprot, oprot):
+        args = getTableRegions_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getTableRegions_result()
+        try:
+            result.success = self._handler.getTableRegions(args.tableName)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("getTableRegions", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_createTable(self, seqid, iprot, oprot):
+        args = createTable_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = createTable_result()
+        try:
+            self._handler.createTable(args.tableName, args.columnFamilies)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except IllegalArgument as ia:
+            msg_type = TMessageType.REPLY
+            result.ia = ia
+        except AlreadyExists as exist:
+            msg_type = TMessageType.REPLY
+            result.exist = exist
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("createTable", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_deleteTable(self, seqid, iprot, oprot):
+        args = deleteTable_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = deleteTable_result()
+        try:
+            self._handler.deleteTable(args.tableName)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("deleteTable", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_get(self, seqid, iprot, oprot):
+        args = get_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = get_result()
+        try:
+            result.success = self._handler.get(args.tableName, args.row, args.column, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("get", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getVer(self, seqid, iprot, oprot):
+        args = getVer_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getVer_result()
+        try:
+            result.success = self._handler.getVer(args.tableName, args.row, args.column, args.numVersions, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("getVer", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getVerTs(self, seqid, iprot, oprot):
+        args = getVerTs_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getVerTs_result()
+        try:
+            result.success = self._handler.getVerTs(args.tableName, args.row, args.column, args.timestamp, args.numVersions, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("getVerTs", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getRow(self, seqid, iprot, oprot):
+        args = getRow_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getRow_result()
+        try:
+            result.success = self._handler.getRow(args.tableName, args.row, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("getRow", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getRowWithColumns(self, seqid, iprot, oprot):
+        args = getRowWithColumns_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getRowWithColumns_result()
+        try:
+            result.success = self._handler.getRowWithColumns(args.tableName, args.row, args.columns, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("getRowWithColumns", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getRowTs(self, seqid, iprot, oprot):
+        args = getRowTs_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getRowTs_result()
+        try:
+            result.success = self._handler.getRowTs(args.tableName, args.row, args.timestamp, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("getRowTs", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getRowWithColumnsTs(self, seqid, iprot, oprot):
+        args = getRowWithColumnsTs_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getRowWithColumnsTs_result()
+        try:
+            result.success = self._handler.getRowWithColumnsTs(args.tableName, args.row, args.columns, args.timestamp, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("getRowWithColumnsTs", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getRows(self, seqid, iprot, oprot):
+        args = getRows_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getRows_result()
+        try:
+            result.success = self._handler.getRows(args.tableName, args.rows, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("getRows", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getRowsWithColumns(self, seqid, iprot, oprot):
+        args = getRowsWithColumns_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getRowsWithColumns_result()
+        try:
+            result.success = self._handler.getRowsWithColumns(args.tableName, args.rows, args.columns, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("getRowsWithColumns", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getRowsTs(self, seqid, iprot, oprot):
+        args = getRowsTs_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getRowsTs_result()
+        try:
+            result.success = self._handler.getRowsTs(args.tableName, args.rows, args.timestamp, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("getRowsTs", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getRowsWithColumnsTs(self, seqid, iprot, oprot):
+        args = getRowsWithColumnsTs_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getRowsWithColumnsTs_result()
+        try:
+            result.success = self._handler.getRowsWithColumnsTs(args.tableName, args.rows, args.columns, args.timestamp, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("getRowsWithColumnsTs", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_mutateRow(self, seqid, iprot, oprot):
+        args = mutateRow_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = mutateRow_result()
+        try:
+            self._handler.mutateRow(args.tableName, args.row, args.mutations, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except IllegalArgument as ia:
+            msg_type = TMessageType.REPLY
+            result.ia = ia
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("mutateRow", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_mutateRowTs(self, seqid, iprot, oprot):
+        args = mutateRowTs_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = mutateRowTs_result()
+        try:
+            self._handler.mutateRowTs(args.tableName, args.row, args.mutations, args.timestamp, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except IllegalArgument as ia:
+            msg_type = TMessageType.REPLY
+            result.ia = ia
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("mutateRowTs", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_mutateRows(self, seqid, iprot, oprot):
+        args = mutateRows_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = mutateRows_result()
+        try:
+            self._handler.mutateRows(args.tableName, args.rowBatches, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except IllegalArgument as ia:
+            msg_type = TMessageType.REPLY
+            result.ia = ia
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("mutateRows", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_mutateRowsTs(self, seqid, iprot, oprot):
+        args = mutateRowsTs_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = mutateRowsTs_result()
+        try:
+            self._handler.mutateRowsTs(args.tableName, args.rowBatches, args.timestamp, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except IllegalArgument as ia:
+            msg_type = TMessageType.REPLY
+            result.ia = ia
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("mutateRowsTs", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_atomicIncrement(self, seqid, iprot, oprot):
+        args = atomicIncrement_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = atomicIncrement_result()
+        try:
+            result.success = self._handler.atomicIncrement(args.tableName, args.row, args.column, args.value)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except IllegalArgument as ia:
+            msg_type = TMessageType.REPLY
+            result.ia = ia
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("atomicIncrement", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_deleteAll(self, seqid, iprot, oprot):
+        args = deleteAll_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = deleteAll_result()
+        try:
+            self._handler.deleteAll(args.tableName, args.row, args.column, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("deleteAll", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_deleteAllTs(self, seqid, iprot, oprot):
+        args = deleteAllTs_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = deleteAllTs_result()
+        try:
+            self._handler.deleteAllTs(args.tableName, args.row, args.column, args.timestamp, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("deleteAllTs", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_deleteAllRow(self, seqid, iprot, oprot):
+        args = deleteAllRow_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = deleteAllRow_result()
+        try:
+            self._handler.deleteAllRow(args.tableName, args.row, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("deleteAllRow", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_increment(self, seqid, iprot, oprot):
+        args = increment_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = increment_result()
+        try:
+            self._handler.increment(args.increment)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("increment", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_incrementRows(self, seqid, iprot, oprot):
+        args = incrementRows_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = incrementRows_result()
+        try:
+            self._handler.incrementRows(args.increments)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("incrementRows", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_deleteAllRowTs(self, seqid, iprot, oprot):
+        args = deleteAllRowTs_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = deleteAllRowTs_result()
+        try:
+            self._handler.deleteAllRowTs(args.tableName, args.row, args.timestamp, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("deleteAllRowTs", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_scannerOpenWithScan(self, seqid, iprot, oprot):
+        args = scannerOpenWithScan_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = scannerOpenWithScan_result()
+        try:
+            result.success = self._handler.scannerOpenWithScan(args.tableName, args.scan, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("scannerOpenWithScan", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_scannerOpen(self, seqid, iprot, oprot):
+        args = scannerOpen_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = scannerOpen_result()
+        try:
+            result.success = self._handler.scannerOpen(args.tableName, args.startRow, args.columns, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("scannerOpen", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_scannerOpenWithStop(self, seqid, iprot, oprot):
+        args = scannerOpenWithStop_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = scannerOpenWithStop_result()
+        try:
+            result.success = self._handler.scannerOpenWithStop(args.tableName, args.startRow, args.stopRow, args.columns, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("scannerOpenWithStop", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_scannerOpenWithPrefix(self, seqid, iprot, oprot):
+        args = scannerOpenWithPrefix_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = scannerOpenWithPrefix_result()
+        try:
+            result.success = self._handler.scannerOpenWithPrefix(args.tableName, args.startAndPrefix, args.columns, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("scannerOpenWithPrefix", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_scannerOpenTs(self, seqid, iprot, oprot):
+        args = scannerOpenTs_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = scannerOpenTs_result()
+        try:
+            result.success = self._handler.scannerOpenTs(args.tableName, args.startRow, args.columns, args.timestamp, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("scannerOpenTs", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_scannerOpenWithStopTs(self, seqid, iprot, oprot):
+        args = scannerOpenWithStopTs_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = scannerOpenWithStopTs_result()
+        try:
+            result.success = self._handler.scannerOpenWithStopTs(args.tableName, args.startRow, args.stopRow, args.columns, args.timestamp, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("scannerOpenWithStopTs", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_scannerGet(self, seqid, iprot, oprot):
+        args = scannerGet_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = scannerGet_result()
+        try:
+            result.success = self._handler.scannerGet(args.id)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except IllegalArgument as ia:
+            msg_type = TMessageType.REPLY
+            result.ia = ia
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("scannerGet", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_scannerGetList(self, seqid, iprot, oprot):
+        args = scannerGetList_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = scannerGetList_result()
+        try:
+            result.success = self._handler.scannerGetList(args.id, args.nbRows)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except IllegalArgument as ia:
+            msg_type = TMessageType.REPLY
+            result.ia = ia
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("scannerGetList", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_scannerClose(self, seqid, iprot, oprot):
+        args = scannerClose_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = scannerClose_result()
+        try:
+            self._handler.scannerClose(args.id)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except IllegalArgument as ia:
+            msg_type = TMessageType.REPLY
+            result.ia = ia
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("scannerClose", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getRegionInfo(self, seqid, iprot, oprot):
+        args = getRegionInfo_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getRegionInfo_result()
+        try:
+            result.success = self._handler.getRegionInfo(args.row)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("getRegionInfo", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_append(self, seqid, iprot, oprot):
+        args = append_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = append_result()
+        try:
+            result.success = self._handler.append(args.append)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("append", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_checkAndPut(self, seqid, iprot, oprot):
+        args = checkAndPut_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = checkAndPut_result()
+        try:
+            result.success = self._handler.checkAndPut(args.tableName, args.row, args.column, args.value, args.mput, args.attributes)
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except IOError as io:
+            msg_type = TMessageType.REPLY
+            result.io = io
+        except IllegalArgument as ia:
+            msg_type = TMessageType.REPLY
+            result.ia = ia
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("checkAndPut", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getThriftServerType(self, seqid, iprot, oprot):
+        args = getThriftServerType_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getThriftServerType_result()
+        try:
+            result.success = self._handler.getThriftServerType()
+            msg_type = TMessageType.REPLY
+        except TTransport.TTransportException:
+            raise
+        except TApplicationException as ex:
+            logging.exception('TApplication exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = ex
+        except Exception:
+            logging.exception('Unexpected exception in handler')
+            msg_type = TMessageType.EXCEPTION
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("getThriftServerType", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+# HELPER FUNCTIONS AND STRUCTURES
+
+
+class enableTable_args(object):
     """
-    pass
+    Attributes:
+     - tableName: name of the table
 
-  def disableTable(self, tableName):
     """
-    Disables a table (takes it off-line) If it is being served, the master
-    will tell the servers to stop serving it.
 
-    Parameters:
+
+    def __init__(self, tableName=None,):
+        self.tableName = tableName
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('enableTable_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(enableTable_args)
+enableTable_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+)
+
+
+class enableTable_result(object):
+    """
+    Attributes:
+     - io
+
+    """
+
+
+    def __init__(self, io=None,):
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('enableTable_result')
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(enableTable_result)
+enableTable_result.thrift_spec = (
+    None,  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class disableTable_args(object):
+    """
+    Attributes:
      - tableName: name of the table
-    """
-    pass
 
-  def isTableEnabled(self, tableName):
     """
-    @return true if table is on-line
 
-    Parameters:
+
+    def __init__(self, tableName=None,):
+        self.tableName = tableName
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('disableTable_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(disableTable_args)
+disableTable_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+)
+
+
+class disableTable_result(object):
+    """
+    Attributes:
+     - io
+
+    """
+
+
+    def __init__(self, io=None,):
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('disableTable_result')
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(disableTable_result)
+disableTable_result.thrift_spec = (
+    None,  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class isTableEnabled_args(object):
+    """
+    Attributes:
      - tableName: name of the table to check
-    """
-    pass
 
-  def compact(self, tableNameOrRegionName):
-    """
-    Parameters:
-     - tableNameOrRegionName
     """
-    pass
 
-  def majorCompact(self, tableNameOrRegionName):
-    """
-    Parameters:
+
+    def __init__(self, tableName=None,):
+        self.tableName = tableName
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('isTableEnabled_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(isTableEnabled_args)
+isTableEnabled_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+)
+
+
+class isTableEnabled_result(object):
+    """
+    Attributes:
+     - success
+     - io
+
+    """
+
+
+    def __init__(self, success=None, io=None,):
+        self.success = success
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 0:
+                if ftype == TType.BOOL:
+                    self.success = iprot.readBool()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('isTableEnabled_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.BOOL, 0)
+            oprot.writeBool(self.success)
+            oprot.writeFieldEnd()
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(isTableEnabled_result)
+isTableEnabled_result.thrift_spec = (
+    (0, TType.BOOL, 'success', None, None, ),  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class compact_args(object):
+    """
+    Attributes:
      - tableNameOrRegionName
-    """
-    pass
 
-  def getTableNames(self, ):
     """
-    List all the userspace tables.
 
-    @return returns a list of names
-    """
-    pass
 
-  def getColumnDescriptors(self, tableName):
+    def __init__(self, tableNameOrRegionName=None,):
+        self.tableNameOrRegionName = tableNameOrRegionName
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableNameOrRegionName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('compact_args')
+        if self.tableNameOrRegionName is not None:
+            oprot.writeFieldBegin('tableNameOrRegionName', TType.STRING, 1)
+            oprot.writeBinary(self.tableNameOrRegionName)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(compact_args)
+compact_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableNameOrRegionName', 'BINARY', None, ),  # 1
+)
+
+
+class compact_result(object):
+    """
+    Attributes:
+     - io
+
+    """
+
+
+    def __init__(self, io=None,):
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('compact_result')
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(compact_result)
+compact_result.thrift_spec = (
+    None,  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class majorCompact_args(object):
+    """
+    Attributes:
+     - tableNameOrRegionName
+
     """
-    List all the column families assoicated with a table.
 
-    @return list of column family descriptors
 
-    Parameters:
+    def __init__(self, tableNameOrRegionName=None,):
+        self.tableNameOrRegionName = tableNameOrRegionName
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableNameOrRegionName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('majorCompact_args')
+        if self.tableNameOrRegionName is not None:
+            oprot.writeFieldBegin('tableNameOrRegionName', TType.STRING, 1)
+            oprot.writeBinary(self.tableNameOrRegionName)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(majorCompact_args)
+majorCompact_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableNameOrRegionName', 'BINARY', None, ),  # 1
+)
+
+
+class majorCompact_result(object):
+    """
+    Attributes:
+     - io
+
+    """
+
+
+    def __init__(self, io=None,):
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('majorCompact_result')
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(majorCompact_result)
+majorCompact_result.thrift_spec = (
+    None,  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class getTableNames_args(object):
+
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getTableNames_args')
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getTableNames_args)
+getTableNames_args.thrift_spec = (
+)
+
+
+class getTableNames_result(object):
+    """
+    Attributes:
+     - success
+     - io
+
+    """
+
+
+    def __init__(self, success=None, io=None,):
+        self.success = success
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 0:
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype47, _size44) = iprot.readListBegin()
+                    for _i48 in range(_size44):
+                        _elem49 = iprot.readBinary()
+                        self.success.append(_elem49)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getTableNames_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRING, len(self.success))
+            for iter50 in self.success:
+                oprot.writeBinary(iter50)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getTableNames_result)
+getTableNames_result.thrift_spec = (
+    (0, TType.LIST, 'success', (TType.STRING, 'BINARY', False), None, ),  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class getColumnDescriptors_args(object):
+    """
+    Attributes:
      - tableName: table name
-    """
-    pass
 
-  def getTableRegions(self, tableName):
     """
-    List the regions associated with a table.
 
-    @return list of region descriptors
 
-    Parameters:
+    def __init__(self, tableName=None,):
+        self.tableName = tableName
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getColumnDescriptors_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getColumnDescriptors_args)
+getColumnDescriptors_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+)
+
+
+class getColumnDescriptors_result(object):
+    """
+    Attributes:
+     - success
+     - io
+
+    """
+
+
+    def __init__(self, success=None, io=None,):
+        self.success = success
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 0:
+                if ftype == TType.MAP:
+                    self.success = {}
+                    (_ktype52, _vtype53, _size51) = iprot.readMapBegin()
+                    for _i55 in range(_size51):
+                        _key56 = iprot.readBinary()
+                        _val57 = ColumnDescriptor()
+                        _val57.read(iprot)
+                        self.success[_key56] = _val57
+                    iprot.readMapEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getColumnDescriptors_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.MAP, 0)
+            oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.success))
+            for kiter58, viter59 in self.success.items():
+                oprot.writeBinary(kiter58)
+                viter59.write(oprot)
+            oprot.writeMapEnd()
+            oprot.writeFieldEnd()
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getColumnDescriptors_result)
+getColumnDescriptors_result.thrift_spec = (
+    (0, TType.MAP, 'success', (TType.STRING, 'BINARY', TType.STRUCT, [ColumnDescriptor, None], False), None, ),  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class getTableRegions_args(object):
+    """
+    Attributes:
      - tableName: table name
-    """
-    pass
 
-  def createTable(self, tableName, columnFamilies):
     """
-    Create a table with the specified column families.  The name
-    field for each ColumnDescriptor must be set and must end in a
-    colon (:). All other fields are optional and will get default
-    values if not explicitly specified.
-
-    @throws IllegalArgument if an input parameter is invalid
 
-    @throws AlreadyExists if the table name already exists
 
-    Parameters:
+    def __init__(self, tableName=None,):
+        self.tableName = tableName
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getTableRegions_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getTableRegions_args)
+getTableRegions_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+)
+
+
+class getTableRegions_result(object):
+    """
+    Attributes:
+     - success
+     - io
+
+    """
+
+
+    def __init__(self, success=None, io=None,):
+        self.success = success
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 0:
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype63, _size60) = iprot.readListBegin()
+                    for _i64 in range(_size60):
+                        _elem65 = TRegionInfo()
+                        _elem65.read(iprot)
+                        self.success.append(_elem65)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getTableRegions_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter66 in self.success:
+                iter66.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getTableRegions_result)
+getTableRegions_result.thrift_spec = (
+    (0, TType.LIST, 'success', (TType.STRUCT, [TRegionInfo, None], False), None, ),  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class createTable_args(object):
+    """
+    Attributes:
      - tableName: name of table to create
      - columnFamilies: list of column family descriptors
-    """
-    pass
 
-  def deleteTable(self, tableName):
     """
-    Deletes a table
 
-    @throws IOError if table doesn't exist on server or there was some other
-    problem
 
-    Parameters:
+    def __init__(self, tableName=None, columnFamilies=None,):
+        self.tableName = tableName
+        self.columnFamilies = columnFamilies
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.LIST:
+                    self.columnFamilies = []
+                    (_etype70, _size67) = iprot.readListBegin()
+                    for _i71 in range(_size67):
+                        _elem72 = ColumnDescriptor()
+                        _elem72.read(iprot)
+                        self.columnFamilies.append(_elem72)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('createTable_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        if self.columnFamilies is not None:
+            oprot.writeFieldBegin('columnFamilies', TType.LIST, 2)
+            oprot.writeListBegin(TType.STRUCT, len(self.columnFamilies))
+            for iter73 in self.columnFamilies:
+                iter73.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(createTable_args)
+createTable_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+    (2, TType.LIST, 'columnFamilies', (TType.STRUCT, [ColumnDescriptor, None], False), None, ),  # 2
+)
+
+
+class createTable_result(object):
+    """
+    Attributes:
+     - io
+     - ia
+     - exist
+
+    """
+
+
+    def __init__(self, io=None, ia=None, exist=None,):
+        self.io = io
+        self.ia = ia
+        self.exist = exist
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRUCT:
+                    self.ia = IllegalArgument()
+                    self.ia.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRUCT:
+                    self.exist = AlreadyExists()
+                    self.exist.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('createTable_result')
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        if self.ia is not None:
+            oprot.writeFieldBegin('ia', TType.STRUCT, 2)
+            self.ia.write(oprot)
+            oprot.writeFieldEnd()
+        if self.exist is not None:
+            oprot.writeFieldBegin('exist', TType.STRUCT, 3)
+            self.exist.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(createTable_result)
+createTable_result.thrift_spec = (
+    None,  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+    (2, TType.STRUCT, 'ia', [IllegalArgument, None], None, ),  # 2
+    (3, TType.STRUCT, 'exist', [AlreadyExists, None], None, ),  # 3
+)
+
+
+class deleteTable_args(object):
+    """
+    Attributes:
      - tableName: name of table to delete
-    """
-    pass
 
-  def get(self, tableName, row, column, attributes):
     """
-    Get a single TCell for the specified table, row, and column at the
-    latest timestamp. Returns an empty list if no such value exists.
 
-    @return value for specified row/column
 
-    Parameters:
+    def __init__(self, tableName=None,):
+        self.tableName = tableName
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('deleteTable_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(deleteTable_args)
+deleteTable_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+)
+
+
+class deleteTable_result(object):
+    """
+    Attributes:
+     - io
+
+    """
+
+
+    def __init__(self, io=None,):
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('deleteTable_result')
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(deleteTable_result)
+deleteTable_result.thrift_spec = (
+    None,  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class get_args(object):
+    """
+    Attributes:
      - tableName: name of table
      - row: row key
      - column: column name
      - attributes: Get attributes
-    """
-    pass
 
-  def getVer(self, tableName, row, column, numVersions, attributes):
     """
-    Get the specified number of versions for the specified table,
-    row, and column.
 
-    @return list of cells for specified row/column
 
-    Parameters:
+    def __init__(self, tableName=None, row=None, column=None, attributes=None,):
+        self.tableName = tableName
+        self.row = row
+        self.column = column
+        self.attributes = attributes
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.row = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.column = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.MAP:
+                    self.attributes = {}
+                    (_ktype75, _vtype76, _size74) = iprot.readMapBegin()
+                    for _i78 in range(_size74):
+                        _key79 = iprot.readBinary()
+                        _val80 = iprot.readBinary()
+                        self.attributes[_key79] = _val80
+                    iprot.readMapEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('get_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        if self.row is not None:
+            oprot.writeFieldBegin('row', TType.STRING, 2)
+            oprot.writeBinary(self.row)
+            oprot.writeFieldEnd()
+        if self.column is not None:
+            oprot.writeFieldBegin('column', TType.STRING, 3)
+            oprot.writeBinary(self.column)
+            oprot.writeFieldEnd()
+        if self.attributes is not None:
+            oprot.writeFieldBegin('attributes', TType.MAP, 4)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.attributes))
+            for kiter81, viter82 in self.attributes.items():
+                oprot.writeBinary(kiter81)
+                oprot.writeBinary(viter82)
+            oprot.writeMapEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(get_args)
+get_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+    (2, TType.STRING, 'row', 'BINARY', None, ),  # 2
+    (3, TType.STRING, 'column', 'BINARY', None, ),  # 3
+    (4, TType.MAP, 'attributes', (TType.STRING, 'BINARY', TType.STRING, 'BINARY', False), None, ),  # 4
+)
+
+
+class get_result(object):
+    """
+    Attributes:
+     - success
+     - io
+
+    """
+
+
+    def __init__(self, success=None, io=None,):
+        self.success = success
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 0:
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype86, _size83) = iprot.readListBegin()
+                    for _i87 in range(_size83):
+                        _elem88 = TCell()
+                        _elem88.read(iprot)
+                        self.success.append(_elem88)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('get_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter89 in self.success:
+                iter89.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(get_result)
+get_result.thrift_spec = (
+    (0, TType.LIST, 'success', (TType.STRUCT, [TCell, None], False), None, ),  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class getVer_args(object):
+    """
+    Attributes:
      - tableName: name of table
      - row: row key
      - column: column name
      - numVersions: number of versions to retrieve
      - attributes: Get attributes
-    """
-    pass
 
-  def getVerTs(self, tableName, row, column, timestamp, numVersions, attributes):
     """
-    Get the specified number of versions for the specified table,
-    row, and column.  Only versions less than or equal to the specified
-    timestamp will be returned.
 
-    @return list of cells for specified row/column
 
-    Parameters:
+    def __init__(self, tableName=None, row=None, column=None, numVersions=None, attributes=None,):
+        self.tableName = tableName
+        self.row = row
+        self.column = column
+        self.numVersions = numVersions
+        self.attributes = attributes
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.row = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.column = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.I32:
+                    self.numVersions = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.MAP:
+                    self.attributes = {}
+                    (_ktype91, _vtype92, _size90) = iprot.readMapBegin()
+                    for _i94 in range(_size90):
+                        _key95 = iprot.readBinary()
+                        _val96 = iprot.readBinary()
+                        self.attributes[_key95] = _val96
+                    iprot.readMapEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getVer_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        if self.row is not None:
+            oprot.writeFieldBegin('row', TType.STRING, 2)
+            oprot.writeBinary(self.row)
+            oprot.writeFieldEnd()
+        if self.column is not None:
+            oprot.writeFieldBegin('column', TType.STRING, 3)
+            oprot.writeBinary(self.column)
+            oprot.writeFieldEnd()
+        if self.numVersions is not None:
+            oprot.writeFieldBegin('numVersions', TType.I32, 4)
+            oprot.writeI32(self.numVersions)
+            oprot.writeFieldEnd()
+        if self.attributes is not None:
+            oprot.writeFieldBegin('attributes', TType.MAP, 5)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.attributes))
+            for kiter97, viter98 in self.attributes.items():
+                oprot.writeBinary(kiter97)
+                oprot.writeBinary(viter98)
+            oprot.writeMapEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getVer_args)
+getVer_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+    (2, TType.STRING, 'row', 'BINARY', None, ),  # 2
+    (3, TType.STRING, 'column', 'BINARY', None, ),  # 3
+    (4, TType.I32, 'numVersions', None, None, ),  # 4
+    (5, TType.MAP, 'attributes', (TType.STRING, 'BINARY', TType.STRING, 'BINARY', False), None, ),  # 5
+)
+
+
+class getVer_result(object):
+    """
+    Attributes:
+     - success
+     - io
+
+    """
+
+
+    def __init__(self, success=None, io=None,):
+        self.success = success
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 0:
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype102, _size99) = iprot.readListBegin()
+                    for _i103 in range(_size99):
+                        _elem104 = TCell()
+                        _elem104.read(iprot)
+                        self.success.append(_elem104)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getVer_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter105 in self.success:
+                iter105.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getVer_result)
+getVer_result.thrift_spec = (
+    (0, TType.LIST, 'success', (TType.STRUCT, [TCell, None], False), None, ),  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class getVerTs_args(object):
+    """
+    Attributes:
      - tableName: name of table
      - row: row key
      - column: column name
      - timestamp: timestamp
      - numVersions: number of versions to retrieve
      - attributes: Get attributes
-    """
-    pass
 
-  def getRow(self, tableName, row, attributes):
     """
-    Get all the data for the specified table and row at the latest
-    timestamp. Returns an empty list if the row does not exist.
 
-    @return TRowResult containing the row and map of columns to TCells
 
-    Parameters:
+    def __init__(self, tableName=None, row=None, column=None, timestamp=None, numVersions=None, attributes=None,):
+        self.tableName = tableName
+        self.row = row
+        self.column = column
+        self.timestamp = timestamp
+        self.numVersions = numVersions
+        self.attributes = attributes
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.row = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.column = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.I64:
+                    self.timestamp = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.I32:
+                    self.numVersions = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 6:
+                if ftype == TType.MAP:
+                    self.attributes = {}
+                    (_ktype107, _vtype108, _size106) = iprot.readMapBegin()
+                    for _i110 in range(_size106):
+                        _key111 = iprot.readBinary()
+                        _val112 = iprot.readBinary()
+                        self.attributes[_key111] = _val112
+                    iprot.readMapEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getVerTs_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        if self.row is not None:
+            oprot.writeFieldBegin('row', TType.STRING, 2)
+            oprot.writeBinary(self.row)
+            oprot.writeFieldEnd()
+        if self.column is not None:
+            oprot.writeFieldBegin('column', TType.STRING, 3)
+            oprot.writeBinary(self.column)
+            oprot.writeFieldEnd()
+        if self.timestamp is not None:
+            oprot.writeFieldBegin('timestamp', TType.I64, 4)
+            oprot.writeI64(self.timestamp)
+            oprot.writeFieldEnd()
+        if self.numVersions is not None:
+            oprot.writeFieldBegin('numVersions', TType.I32, 5)
+            oprot.writeI32(self.numVersions)
+            oprot.writeFieldEnd()
+        if self.attributes is not None:
+            oprot.writeFieldBegin('attributes', TType.MAP, 6)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.attributes))
+            for kiter113, viter114 in self.attributes.items():
+                oprot.writeBinary(kiter113)
+                oprot.writeBinary(viter114)
+            oprot.writeMapEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getVerTs_args)
+getVerTs_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+    (2, TType.STRING, 'row', 'BINARY', None, ),  # 2
+    (3, TType.STRING, 'column', 'BINARY', None, ),  # 3
+    (4, TType.I64, 'timestamp', None, None, ),  # 4
+    (5, TType.I32, 'numVersions', None, None, ),  # 5
+    (6, TType.MAP, 'attributes', (TType.STRING, 'BINARY', TType.STRING, 'BINARY', False), None, ),  # 6
+)
+
+
+class getVerTs_result(object):
+    """
+    Attributes:
+     - success
+     - io
+
+    """
+
+
+    def __init__(self, success=None, io=None,):
+        self.success = success
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 0:
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype118, _size115) = iprot.readListBegin()
+                    for _i119 in range(_size115):
+                        _elem120 = TCell()
+                        _elem120.read(iprot)
+                        self.success.append(_elem120)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getVerTs_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter121 in self.success:
+                iter121.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getVerTs_result)
+getVerTs_result.thrift_spec = (
+    (0, TType.LIST, 'success', (TType.STRUCT, [TCell, None], False), None, ),  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class getRow_args(object):
+    """
+    Attributes:
      - tableName: name of table
      - row: row key
      - attributes: Get attributes
-    """
-    pass
 
-  def getRowWithColumns(self, tableName, row, columns, attributes):
     """
-    Get the specified columns for the specified table and row at the latest
-    timestamp. Returns an empty list if the row does not exist.
 
-    @return TRowResult containing the row and map of columns to TCells
 
-    Parameters:
+    def __init__(self, tableName=None, row=None, attributes=None,):
+        self.tableName = tableName
+        self.row = row
+        self.attributes = attributes
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.row = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.MAP:
+                    self.attributes = {}
+                    (_ktype123, _vtype124, _size122) = iprot.readMapBegin()
+                    for _i126 in range(_size122):
+                        _key127 = iprot.readBinary()
+                        _val128 = iprot.readBinary()
+                        self.attributes[_key127] = _val128
+                    iprot.readMapEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getRow_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        if self.row is not None:
+            oprot.writeFieldBegin('row', TType.STRING, 2)
+            oprot.writeBinary(self.row)
+            oprot.writeFieldEnd()
+        if self.attributes is not None:
+            oprot.writeFieldBegin('attributes', TType.MAP, 3)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.attributes))
+            for kiter129, viter130 in self.attributes.items():
+                oprot.writeBinary(kiter129)
+                oprot.writeBinary(viter130)
+            oprot.writeMapEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getRow_args)
+getRow_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+    (2, TType.STRING, 'row', 'BINARY', None, ),  # 2
+    (3, TType.MAP, 'attributes', (TType.STRING, 'BINARY', TType.STRING, 'BINARY', False), None, ),  # 3
+)
+
+
+class getRow_result(object):
+    """
+    Attributes:
+     - success
+     - io
+
+    """
+
+
+    def __init__(self, success=None, io=None,):
+        self.success = success
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 0:
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype134, _size131) = iprot.readListBegin()
+                    for _i135 in range(_size131):
+                        _elem136 = TRowResult()
+                        _elem136.read(iprot)
+                        self.success.append(_elem136)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getRow_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter137 in self.success:
+                iter137.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getRow_result)
+getRow_result.thrift_spec = (
+    (0, TType.LIST, 'success', (TType.STRUCT, [TRowResult, None], False), None, ),  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class getRowWithColumns_args(object):
+    """
+    Attributes:
      - tableName: name of table
      - row: row key
      - columns: List of columns to return, null for all columns
      - attributes: Get attributes
-    """
-    pass
 
-  def getRowTs(self, tableName, row, timestamp, attributes):
     """
-    Get all the data for the specified table and row at the specified
-    timestamp. Returns an empty list if the row does not exist.
 
-    @return TRowResult containing the row and map of columns to TCells
 
-    Parameters:
+    def __init__(self, tableName=None, row=None, columns=None, attributes=None,):
+        self.tableName = tableName
+        self.row = row
+        self.columns = columns
+        self.attributes = attributes
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.row = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.LIST:
+                    self.columns = []
+                    (_etype141, _size138) = iprot.readListBegin()
+                    for _i142 in range(_size138):
+                        _elem143 = iprot.readBinary()
+                        self.columns.append(_elem143)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.MAP:
+                    self.attributes = {}
+                    (_ktype145, _vtype146, _size144) = iprot.readMapBegin()
+                    for _i148 in range(_size144):
+                        _key149 = iprot.readBinary()
+                        _val150 = iprot.readBinary()
+                        self.attributes[_key149] = _val150
+                    iprot.readMapEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getRowWithColumns_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        if self.row is not None:
+            oprot.writeFieldBegin('row', TType.STRING, 2)
+            oprot.writeBinary(self.row)
+            oprot.writeFieldEnd()
+        if self.columns is not None:
+            oprot.writeFieldBegin('columns', TType.LIST, 3)
+            oprot.writeListBegin(TType.STRING, len(self.columns))
+            for iter151 in self.columns:
+                oprot.writeBinary(iter151)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.attributes is not None:
+            oprot.writeFieldBegin('attributes', TType.MAP, 4)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.attributes))
+            for kiter152, viter153 in self.attributes.items():
+                oprot.writeBinary(kiter152)
+                oprot.writeBinary(viter153)
+            oprot.writeMapEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getRowWithColumns_args)
+getRowWithColumns_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+    (2, TType.STRING, 'row', 'BINARY', None, ),  # 2
+    (3, TType.LIST, 'columns', (TType.STRING, 'BINARY', False), None, ),  # 3
+    (4, TType.MAP, 'attributes', (TType.STRING, 'BINARY', TType.STRING, 'BINARY', False), None, ),  # 4
+)
+
+
+class getRowWithColumns_result(object):
+    """
+    Attributes:
+     - success
+     - io
+
+    """
+
+
+    def __init__(self, success=None, io=None,):
+        self.success = success
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 0:
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype157, _size154) = iprot.readListBegin()
+                    for _i158 in range(_size154):
+                        _elem159 = TRowResult()
+                        _elem159.read(iprot)
+                        self.success.append(_elem159)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getRowWithColumns_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter160 in self.success:
+                iter160.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getRowWithColumns_result)
+getRowWithColumns_result.thrift_spec = (
+    (0, TType.LIST, 'success', (TType.STRUCT, [TRowResult, None], False), None, ),  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class getRowTs_args(object):
+    """
+    Attributes:
      - tableName: name of the table
      - row: row key
      - timestamp: timestamp
      - attributes: Get attributes
-    """
-    pass
 
-  def getRowWithColumnsTs(self, tableName, row, columns, timestamp, attributes):
     """
-    Get the specified columns for the specified table and row at the specified
-    timestamp. Returns an empty list if the row does not exist.
 
-    @return TRowResult containing the row and map of columns to TCells
 
-    Parameters:
+    def __init__(self, tableName=None, row=None, timestamp=None, attributes=None,):
+        self.tableName = tableName
+        self.row = row
+        self.timestamp = timestamp
+        self.attributes = attributes
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.row = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.I64:
+                    self.timestamp = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.MAP:
+                    self.attributes = {}
+                    (_ktype162, _vtype163, _size161) = iprot.readMapBegin()
+                    for _i165 in range(_size161):
+                        _key166 = iprot.readBinary()
+                        _val167 = iprot.readBinary()
+                        self.attributes[_key166] = _val167
+                    iprot.readMapEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getRowTs_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        if self.row is not None:
+            oprot.writeFieldBegin('row', TType.STRING, 2)
+            oprot.writeBinary(self.row)
+            oprot.writeFieldEnd()
+        if self.timestamp is not None:
+            oprot.writeFieldBegin('timestamp', TType.I64, 3)
+            oprot.writeI64(self.timestamp)
+            oprot.writeFieldEnd()
+        if self.attributes is not None:
+            oprot.writeFieldBegin('attributes', TType.MAP, 4)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.attributes))
+            for kiter168, viter169 in self.attributes.items():
+                oprot.writeBinary(kiter168)
+                oprot.writeBinary(viter169)
+            oprot.writeMapEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getRowTs_args)
+getRowTs_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+    (2, TType.STRING, 'row', 'BINARY', None, ),  # 2
+    (3, TType.I64, 'timestamp', None, None, ),  # 3
+    (4, TType.MAP, 'attributes', (TType.STRING, 'BINARY', TType.STRING, 'BINARY', False), None, ),  # 4
+)
+
+
+class getRowTs_result(object):
+    """
+    Attributes:
+     - success
+     - io
+
+    """
+
+
+    def __init__(self, success=None, io=None,):
+        self.success = success
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 0:
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype173, _size170) = iprot.readListBegin()
+                    for _i174 in range(_size170):
+                        _elem175 = TRowResult()
+                        _elem175.read(iprot)
+                        self.success.append(_elem175)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getRowTs_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter176 in self.success:
+                iter176.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getRowTs_result)
+getRowTs_result.thrift_spec = (
+    (0, TType.LIST, 'success', (TType.STRUCT, [TRowResult, None], False), None, ),  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class getRowWithColumnsTs_args(object):
+    """
+    Attributes:
      - tableName: name of table
      - row: row key
      - columns: List of columns to return, null for all columns
      - timestamp
      - attributes: Get attributes
-    """
-    pass
 
-  def getRows(self, tableName, rows, attributes):
     """
-    Get all the data for the specified table and rows at the latest
-    timestamp. Returns an empty list if no rows exist.
 
-    @return TRowResult containing the rows and map of columns to TCells
 
-    Parameters:
+    def __init__(self, tableName=None, row=None, columns=None, timestamp=None, attributes=None,):
+        self.tableName = tableName
+        self.row = row
+        self.columns = columns
+        self.timestamp = timestamp
+        self.attributes = attributes
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.row = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.LIST:
+                    self.columns = []
+                    (_etype180, _size177) = iprot.readListBegin()
+                    for _i181 in range(_size177):
+                        _elem182 = iprot.readBinary()
+                        self.columns.append(_elem182)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.I64:
+                    self.timestamp = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.MAP:
+                    self.attributes = {}
+                    (_ktype184, _vtype185, _size183) = iprot.readMapBegin()
+                    for _i187 in range(_size183):
+                        _key188 = iprot.readBinary()
+                        _val189 = iprot.readBinary()
+                        self.attributes[_key188] = _val189
+                    iprot.readMapEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getRowWithColumnsTs_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        if self.row is not None:
+            oprot.writeFieldBegin('row', TType.STRING, 2)
+            oprot.writeBinary(self.row)
+            oprot.writeFieldEnd()
+        if self.columns is not None:
+            oprot.writeFieldBegin('columns', TType.LIST, 3)
+            oprot.writeListBegin(TType.STRING, len(self.columns))
+            for iter190 in self.columns:
+                oprot.writeBinary(iter190)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.timestamp is not None:
+            oprot.writeFieldBegin('timestamp', TType.I64, 4)
+            oprot.writeI64(self.timestamp)
+            oprot.writeFieldEnd()
+        if self.attributes is not None:
+            oprot.writeFieldBegin('attributes', TType.MAP, 5)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.attributes))
+            for kiter191, viter192 in self.attributes.items():
+                oprot.writeBinary(kiter191)
+                oprot.writeBinary(viter192)
+            oprot.writeMapEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getRowWithColumnsTs_args)
+getRowWithColumnsTs_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+    (2, TType.STRING, 'row', 'BINARY', None, ),  # 2
+    (3, TType.LIST, 'columns', (TType.STRING, 'BINARY', False), None, ),  # 3
+    (4, TType.I64, 'timestamp', None, None, ),  # 4
+    (5, TType.MAP, 'attributes', (TType.STRING, 'BINARY', TType.STRING, 'BINARY', False), None, ),  # 5
+)
+
+
+class getRowWithColumnsTs_result(object):
+    """
+    Attributes:
+     - success
+     - io
+
+    """
+
+
+    def __init__(self, success=None, io=None,):
+        self.success = success
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 0:
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype196, _size193) = iprot.readListBegin()
+                    for _i197 in range(_size193):
+                        _elem198 = TRowResult()
+                        _elem198.read(iprot)
+                        self.success.append(_elem198)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getRowWithColumnsTs_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter199 in self.success:
+                iter199.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getRowWithColumnsTs_result)
+getRowWithColumnsTs_result.thrift_spec = (
+    (0, TType.LIST, 'success', (TType.STRUCT, [TRowResult, None], False), None, ),  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class getRows_args(object):
+    """
+    Attributes:
      - tableName: name of table
      - rows: row keys
      - attributes: Get attributes
-    """
-    pass
 
-  def getRowsWithColumns(self, tableName, rows, columns, attributes):
     """
-    Get the specified columns for the specified table and rows at the latest
-    timestamp. Returns an empty list if no rows exist.
 
-    @return TRowResult containing the rows and map of columns to TCells
 
-    Parameters:
+    def __init__(self, tableName=None, rows=None, attributes=None,):
+        self.tableName = tableName
+        self.rows = rows
+        self.attributes = attributes
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.LIST:
+                    self.rows = []
+                    (_etype203, _size200) = iprot.readListBegin()
+                    for _i204 in range(_size200):
+                        _elem205 = iprot.readBinary()
+                        self.rows.append(_elem205)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.MAP:
+                    self.attributes = {}
+                    (_ktype207, _vtype208, _size206) = iprot.readMapBegin()
+                    for _i210 in range(_size206):
+                        _key211 = iprot.readBinary()
+                        _val212 = iprot.readBinary()
+                        self.attributes[_key211] = _val212
+                    iprot.readMapEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getRows_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        if self.rows is not None:
+            oprot.writeFieldBegin('rows', TType.LIST, 2)
+            oprot.writeListBegin(TType.STRING, len(self.rows))
+            for iter213 in self.rows:
+                oprot.writeBinary(iter213)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.attributes is not None:
+            oprot.writeFieldBegin('attributes', TType.MAP, 3)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.attributes))
+            for kiter214, viter215 in self.attributes.items():
+                oprot.writeBinary(kiter214)
+                oprot.writeBinary(viter215)
+            oprot.writeMapEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getRows_args)
+getRows_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+    (2, TType.LIST, 'rows', (TType.STRING, 'BINARY', False), None, ),  # 2
+    (3, TType.MAP, 'attributes', (TType.STRING, 'BINARY', TType.STRING, 'BINARY', False), None, ),  # 3
+)
+
+
+class getRows_result(object):
+    """
+    Attributes:
+     - success
+     - io
+
+    """
+
+
+    def __init__(self, success=None, io=None,):
+        self.success = success
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 0:
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype219, _size216) = iprot.readListBegin()
+                    for _i220 in range(_size216):
+                        _elem221 = TRowResult()
+                        _elem221.read(iprot)
+                        self.success.append(_elem221)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getRows_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter222 in self.success:
+                iter222.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getRows_result)
+getRows_result.thrift_spec = (
+    (0, TType.LIST, 'success', (TType.STRUCT, [TRowResult, None], False), None, ),  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class getRowsWithColumns_args(object):
+    """
+    Attributes:
      - tableName: name of table
      - rows: row keys
      - columns: List of columns to return, null for all columns
      - attributes: Get attributes
-    """
-    pass
 
-  def getRowsTs(self, tableName, rows, timestamp, attributes):
     """
-    Get all the data for the specified table and rows at the specified
-    timestamp. Returns an empty list if no rows exist.
 
-    @return TRowResult containing the rows and map of columns to TCells
 
-    Parameters:
+    def __init__(self, tableName=None, rows=None, columns=None, attributes=None,):
+        self.tableName = tableName
+        self.rows = rows
+        self.columns = columns
+        self.attributes = attributes
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.LIST:
+                    self.rows = []
+                    (_etype226, _size223) = iprot.readListBegin()
+                    for _i227 in range(_size223):
+                        _elem228 = iprot.readBinary()
+                        self.rows.append(_elem228)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.LIST:
+                    self.columns = []
+                    (_etype232, _size229) = iprot.readListBegin()
+                    for _i233 in range(_size229):
+                        _elem234 = iprot.readBinary()
+                        self.columns.append(_elem234)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.MAP:
+                    self.attributes = {}
+                    (_ktype236, _vtype237, _size235) = iprot.readMapBegin()
+                    for _i239 in range(_size235):
+                        _key240 = iprot.readBinary()
+                        _val241 = iprot.readBinary()
+                        self.attributes[_key240] = _val241
+                    iprot.readMapEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getRowsWithColumns_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        if self.rows is not None:
+            oprot.writeFieldBegin('rows', TType.LIST, 2)
+            oprot.writeListBegin(TType.STRING, len(self.rows))
+            for iter242 in self.rows:
+                oprot.writeBinary(iter242)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.columns is not None:
+            oprot.writeFieldBegin('columns', TType.LIST, 3)
+            oprot.writeListBegin(TType.STRING, len(self.columns))
+            for iter243 in self.columns:
+                oprot.writeBinary(iter243)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.attributes is not None:
+            oprot.writeFieldBegin('attributes', TType.MAP, 4)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.attributes))
+            for kiter244, viter245 in self.attributes.items():
+                oprot.writeBinary(kiter244)
+                oprot.writeBinary(viter245)
+            oprot.writeMapEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getRowsWithColumns_args)
+getRowsWithColumns_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+    (2, TType.LIST, 'rows', (TType.STRING, 'BINARY', False), None, ),  # 2
+    (3, TType.LIST, 'columns', (TType.STRING, 'BINARY', False), None, ),  # 3
+    (4, TType.MAP, 'attributes', (TType.STRING, 'BINARY', TType.STRING, 'BINARY', False), None, ),  # 4
+)
+
+
+class getRowsWithColumns_result(object):
+    """
+    Attributes:
+     - success
+     - io
+
+    """
+
+
+    def __init__(self, success=None, io=None,):
+        self.success = success
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 0:
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype249, _size246) = iprot.readListBegin()
+                    for _i250 in range(_size246):
+                        _elem251 = TRowResult()
+                        _elem251.read(iprot)
+                        self.success.append(_elem251)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getRowsWithColumns_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter252 in self.success:
+                iter252.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getRowsWithColumns_result)
+getRowsWithColumns_result.thrift_spec = (
+    (0, TType.LIST, 'success', (TType.STRUCT, [TRowResult, None], False), None, ),  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class getRowsTs_args(object):
+    """
+    Attributes:
      - tableName: name of the table
      - rows: row keys
      - timestamp: timestamp
      - attributes: Get attributes
-    """
-    pass
 
-  def getRowsWithColumnsTs(self, tableName, rows, columns, timestamp, attributes):
     """
-    Get the specified columns for the specified table and rows at the specified
-    timestamp. Returns an empty list if no rows exist.
 
-    @return TRowResult containing the rows and map of columns to TCells
 
-    Parameters:
+    def __init__(self, tableName=None, rows=None, timestamp=None, attributes=None,):
+        self.tableName = tableName
+        self.rows = rows
+        self.timestamp = timestamp
+        self.attributes = attributes
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.LIST:
+                    self.rows = []
+                    (_etype256, _size253) = iprot.readListBegin()
+                    for _i257 in range(_size253):
+                        _elem258 = iprot.readBinary()
+                        self.rows.append(_elem258)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.I64:
+                    self.timestamp = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.MAP:
+                    self.attributes = {}
+                    (_ktype260, _vtype261, _size259) = iprot.readMapBegin()
+                    for _i263 in range(_size259):
+                        _key264 = iprot.readBinary()
+                        _val265 = iprot.readBinary()
+                        self.attributes[_key264] = _val265
+                    iprot.readMapEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getRowsTs_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        if self.rows is not None:
+            oprot.writeFieldBegin('rows', TType.LIST, 2)
+            oprot.writeListBegin(TType.STRING, len(self.rows))
+            for iter266 in self.rows:
+                oprot.writeBinary(iter266)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.timestamp is not None:
+            oprot.writeFieldBegin('timestamp', TType.I64, 3)
+            oprot.writeI64(self.timestamp)
+            oprot.writeFieldEnd()
+        if self.attributes is not None:
+            oprot.writeFieldBegin('attributes', TType.MAP, 4)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.attributes))
+            for kiter267, viter268 in self.attributes.items():
+                oprot.writeBinary(kiter267)
+                oprot.writeBinary(viter268)
+            oprot.writeMapEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getRowsTs_args)
+getRowsTs_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+    (2, TType.LIST, 'rows', (TType.STRING, 'BINARY', False), None, ),  # 2
+    (3, TType.I64, 'timestamp', None, None, ),  # 3
+    (4, TType.MAP, 'attributes', (TType.STRING, 'BINARY', TType.STRING, 'BINARY', False), None, ),  # 4
+)
+
+
+class getRowsTs_result(object):
+    """
+    Attributes:
+     - success
+     - io
+
+    """
+
+
+    def __init__(self, success=None, io=None,):
+        self.success = success
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 0:
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype272, _size269) = iprot.readListBegin()
+                    for _i273 in range(_size269):
+                        _elem274 = TRowResult()
+                        _elem274.read(iprot)
+                        self.success.append(_elem274)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getRowsTs_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter275 in self.success:
+                iter275.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getRowsTs_result)
+getRowsTs_result.thrift_spec = (
+    (0, TType.LIST, 'success', (TType.STRUCT, [TRowResult, None], False), None, ),  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class getRowsWithColumnsTs_args(object):
+    """
+    Attributes:
      - tableName: name of table
      - rows: row keys
      - columns: List of columns to return, null for all columns
      - timestamp
      - attributes: Get attributes
-    """
-    pass
 
-  def mutateRow(self, tableName, row, mutations, attributes):
     """
-    Apply a series of mutations (updates/deletes) to a row in a
-    single transaction.  If an exception is thrown, then the
-    transaction is aborted.  Default current timestamp is used, and
-    all entries will have an identical timestamp.
 
-    Parameters:
+
+    def __init__(self, tableName=None, rows=None, columns=None, timestamp=None, attributes=None,):
+        self.tableName = tableName
+        self.rows = rows
+        self.columns = columns
+        self.timestamp = timestamp
+        self.attributes = attributes
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.LIST:
+                    self.rows = []
+                    (_etype279, _size276) = iprot.readListBegin()
+                    for _i280 in range(_size276):
+                        _elem281 = iprot.readBinary()
+                        self.rows.append(_elem281)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.LIST:
+                    self.columns = []
+                    (_etype285, _size282) = iprot.readListBegin()
+                    for _i286 in range(_size282):
+                        _elem287 = iprot.readBinary()
+                        self.columns.append(_elem287)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.I64:
+                    self.timestamp = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.MAP:
+                    self.attributes = {}
+                    (_ktype289, _vtype290, _size288) = iprot.readMapBegin()
+                    for _i292 in range(_size288):
+                        _key293 = iprot.readBinary()
+                        _val294 = iprot.readBinary()
+                        self.attributes[_key293] = _val294
+                    iprot.readMapEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getRowsWithColumnsTs_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        if self.rows is not None:
+            oprot.writeFieldBegin('rows', TType.LIST, 2)
+            oprot.writeListBegin(TType.STRING, len(self.rows))
+            for iter295 in self.rows:
+                oprot.writeBinary(iter295)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.columns is not None:
+            oprot.writeFieldBegin('columns', TType.LIST, 3)
+            oprot.writeListBegin(TType.STRING, len(self.columns))
+            for iter296 in self.columns:
+                oprot.writeBinary(iter296)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.timestamp is not None:
+            oprot.writeFieldBegin('timestamp', TType.I64, 4)
+            oprot.writeI64(self.timestamp)
+            oprot.writeFieldEnd()
+        if self.attributes is not None:
+            oprot.writeFieldBegin('attributes', TType.MAP, 5)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.attributes))
+            for kiter297, viter298 in self.attributes.items():
+                oprot.writeBinary(kiter297)
+                oprot.writeBinary(viter298)
+            oprot.writeMapEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getRowsWithColumnsTs_args)
+getRowsWithColumnsTs_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+    (2, TType.LIST, 'rows', (TType.STRING, 'BINARY', False), None, ),  # 2
+    (3, TType.LIST, 'columns', (TType.STRING, 'BINARY', False), None, ),  # 3
+    (4, TType.I64, 'timestamp', None, None, ),  # 4
+    (5, TType.MAP, 'attributes', (TType.STRING, 'BINARY', TType.STRING, 'BINARY', False), None, ),  # 5
+)
+
+
+class getRowsWithColumnsTs_result(object):
+    """
+    Attributes:
+     - success
+     - io
+
+    """
+
+
+    def __init__(self, success=None, io=None,):
+        self.success = success
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 0:
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype302, _size299) = iprot.readListBegin()
+                    for _i303 in range(_size299):
+                        _elem304 = TRowResult()
+                        _elem304.read(iprot)
+                        self.success.append(_elem304)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('getRowsWithColumnsTs_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter305 in self.success:
+                iter305.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(getRowsWithColumnsTs_result)
+getRowsWithColumnsTs_result.thrift_spec = (
+    (0, TType.LIST, 'success', (TType.STRUCT, [TRowResult, None], False), None, ),  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class mutateRow_args(object):
+    """
+    Attributes:
      - tableName: name of table
      - row: row key
      - mutations: list of mutation commands
      - attributes: Mutation attributes
-    """
-    pass
 
-  def mutateRowTs(self, tableName, row, mutations, timestamp, attributes):
     """
-    Apply a series of mutations (updates/deletes) to a row in a
-    single transaction.  If an exception is thrown, then the
-    transaction is aborted.  The specified timestamp is used, and
-    all entries will have an identical timestamp.
 
-    Parameters:
+
+    def __init__(self, tableName=None, row=None, mutations=None, attributes=None,):
+        self.tableName = tableName
+        self.row = row
+        self.mutations = mutations
+        self.attributes = attributes
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.row = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.LIST:
+                    self.mutations = []
+                    (_etype309, _size306) = iprot.readListBegin()
+                    for _i310 in range(_size306):
+                        _elem311 = Mutation()
+                        _elem311.read(iprot)
+                        self.mutations.append(_elem311)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.MAP:
+                    self.attributes = {}
+                    (_ktype313, _vtype314, _size312) = iprot.readMapBegin()
+                    for _i316 in range(_size312):
+                        _key317 = iprot.readBinary()
+                        _val318 = iprot.readBinary()
+                        self.attributes[_key317] = _val318
+                    iprot.readMapEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('mutateRow_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        if self.row is not None:
+            oprot.writeFieldBegin('row', TType.STRING, 2)
+            oprot.writeBinary(self.row)
+            oprot.writeFieldEnd()
+        if self.mutations is not None:
+            oprot.writeFieldBegin('mutations', TType.LIST, 3)
+            oprot.writeListBegin(TType.STRUCT, len(self.mutations))
+            for iter319 in self.mutations:
+                iter319.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.attributes is not None:
+            oprot.writeFieldBegin('attributes', TType.MAP, 4)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.attributes))
+            for kiter320, viter321 in self.attributes.items():
+                oprot.writeBinary(kiter320)
+                oprot.writeBinary(viter321)
+            oprot.writeMapEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(mutateRow_args)
+mutateRow_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+    (2, TType.STRING, 'row', 'BINARY', None, ),  # 2
+    (3, TType.LIST, 'mutations', (TType.STRUCT, [Mutation, None], False), None, ),  # 3
+    (4, TType.MAP, 'attributes', (TType.STRING, 'BINARY', TType.STRING, 'BINARY', False), None, ),  # 4
+)
+
+
+class mutateRow_result(object):
+    """
+    Attributes:
+     - io
+     - ia
+
+    """
+
+
+    def __init__(self, io=None, ia=None,):
+        self.io = io
+        self.ia = ia
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRUCT:
+                    self.ia = IllegalArgument()
+                    self.ia.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('mutateRow_result')
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        if self.ia is not None:
+            oprot.writeFieldBegin('ia', TType.STRUCT, 2)
+            self.ia.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(mutateRow_result)
+mutateRow_result.thrift_spec = (
+    None,  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+    (2, TType.STRUCT, 'ia', [IllegalArgument, None], None, ),  # 2
+)
+
+
+class mutateRowTs_args(object):
+    """
+    Attributes:
      - tableName: name of table
      - row: row key
      - mutations: list of mutation commands
      - timestamp: timestamp
      - attributes: Mutation attributes
-    """
-    pass
 
-  def mutateRows(self, tableName, rowBatches, attributes):
     """
-    Apply a series of batches (each a series of mutations on a single row)
-    in a single transaction.  If an exception is thrown, then the
-    transaction is aborted.  Default current timestamp is used, and
-    all entries will have an identical timestamp.
 
-    Parameters:
+
+    def __init__(self, tableName=None, row=None, mutations=None, timestamp=None, attributes=None,):
+        self.tableName = tableName
+        self.row = row
+        self.mutations = mutations
+        self.timestamp = timestamp
+        self.attributes = attributes
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.row = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.LIST:
+                    self.mutations = []
+                    (_etype325, _size322) = iprot.readListBegin()
+                    for _i326 in range(_size322):
+                        _elem327 = Mutation()
+                        _elem327.read(iprot)
+                        self.mutations.append(_elem327)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.I64:
+                    self.timestamp = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.MAP:
+                    self.attributes = {}
+                    (_ktype329, _vtype330, _size328) = iprot.readMapBegin()
+                    for _i332 in range(_size328):
+                        _key333 = iprot.readBinary()
+                        _val334 = iprot.readBinary()
+                        self.attributes[_key333] = _val334
+                    iprot.readMapEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('mutateRowTs_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        if self.row is not None:
+            oprot.writeFieldBegin('row', TType.STRING, 2)
+            oprot.writeBinary(self.row)
+            oprot.writeFieldEnd()
+        if self.mutations is not None:
+            oprot.writeFieldBegin('mutations', TType.LIST, 3)
+            oprot.writeListBegin(TType.STRUCT, len(self.mutations))
+            for iter335 in self.mutations:
+                iter335.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.timestamp is not None:
+            oprot.writeFieldBegin('timestamp', TType.I64, 4)
+            oprot.writeI64(self.timestamp)
+            oprot.writeFieldEnd()
+        if self.attributes is not None:
+            oprot.writeFieldBegin('attributes', TType.MAP, 5)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.attributes))
+            for kiter336, viter337 in self.attributes.items():
+                oprot.writeBinary(kiter336)
+                oprot.writeBinary(viter337)
+            oprot.writeMapEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(mutateRowTs_args)
+mutateRowTs_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+    (2, TType.STRING, 'row', 'BINARY', None, ),  # 2
+    (3, TType.LIST, 'mutations', (TType.STRUCT, [Mutation, None], False), None, ),  # 3
+    (4, TType.I64, 'timestamp', None, None, ),  # 4
+    (5, TType.MAP, 'attributes', (TType.STRING, 'BINARY', TType.STRING, 'BINARY', False), None, ),  # 5
+)
+
+
+class mutateRowTs_result(object):
+    """
+    Attributes:
+     - io
+     - ia
+
+    """
+
+
+    def __init__(self, io=None, ia=None,):
+        self.io = io
+        self.ia = ia
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRUCT:
+                    self.ia = IllegalArgument()
+                    self.ia.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('mutateRowTs_result')
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        if self.ia is not None:
+            oprot.writeFieldBegin('ia', TType.STRUCT, 2)
+            self.ia.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(mutateRowTs_result)
+mutateRowTs_result.thrift_spec = (
+    None,  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+    (2, TType.STRUCT, 'ia', [IllegalArgument, None], None, ),  # 2
+)
+
+
+class mutateRows_args(object):
+    """
+    Attributes:
      - tableName: name of table
      - rowBatches: list of row batches
      - attributes: Mutation attributes
-    """
-    pass
 
-  def mutateRowsTs(self, tableName, rowBatches, timestamp, attributes):
     """
-    Apply a series of batches (each a series of mutations on a single row)
-    in a single transaction.  If an exception is thrown, then the
-    transaction is aborted.  The specified timestamp is used, and
-    all entries will have an identical timestamp.
 
-    Parameters:
+
+    def __init__(self, tableName=None, rowBatches=None, attributes=None,):
+        self.tableName = tableName
+        self.rowBatches = rowBatches
+        self.attributes = attributes
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.LIST:
+                    self.rowBatches = []
+                    (_etype341, _size338) = iprot.readListBegin()
+                    for _i342 in range(_size338):
+                        _elem343 = BatchMutation()
+                        _elem343.read(iprot)
+                        self.rowBatches.append(_elem343)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.MAP:
+                    self.attributes = {}
+                    (_ktype345, _vtype346, _size344) = iprot.readMapBegin()
+                    for _i348 in range(_size344):
+                        _key349 = iprot.readBinary()
+                        _val350 = iprot.readBinary()
+                        self.attributes[_key349] = _val350
+                    iprot.readMapEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('mutateRows_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        if self.rowBatches is not None:
+            oprot.writeFieldBegin('rowBatches', TType.LIST, 2)
+            oprot.writeListBegin(TType.STRUCT, len(self.rowBatches))
+            for iter351 in self.rowBatches:
+                iter351.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.attributes is not None:
+            oprot.writeFieldBegin('attributes', TType.MAP, 3)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.attributes))
+            for kiter352, viter353 in self.attributes.items():
+                oprot.writeBinary(kiter352)
+                oprot.writeBinary(viter353)
+            oprot.writeMapEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(mutateRows_args)
+mutateRows_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+    (2, TType.LIST, 'rowBatches', (TType.STRUCT, [BatchMutation, None], False), None, ),  # 2
+    (3, TType.MAP, 'attributes', (TType.STRING, 'BINARY', TType.STRING, 'BINARY', False), None, ),  # 3
+)
+
+
+class mutateRows_result(object):
+    """
+    Attributes:
+     - io
+     - ia
+
+    """
+
+
+    def __init__(self, io=None, ia=None,):
+        self.io = io
+        self.ia = ia
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRUCT:
+                    self.ia = IllegalArgument()
+                    self.ia.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('mutateRows_result')
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        if self.ia is not None:
+            oprot.writeFieldBegin('ia', TType.STRUCT, 2)
+            self.ia.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(mutateRows_result)
+mutateRows_result.thrift_spec = (
+    None,  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+    (2, TType.STRUCT, 'ia', [IllegalArgument, None], None, ),  # 2
+)
+
+
+class mutateRowsTs_args(object):
+    """
+    Attributes:
      - tableName: name of table
      - rowBatches: list of row batches
      - timestamp: timestamp
      - attributes: Mutation attributes
-    """
-    pass
 
-  def atomicIncrement(self, tableName, row, column, value):
     """
-    Atomically increment the column value specified.  Returns the next value post increment.
 
-    Parameters:
+
+    def __init__(self, tableName=None, rowBatches=None, timestamp=None, attributes=None,):
+        self.tableName = tableName
+        self.rowBatches = rowBatches
+        self.timestamp = timestamp
+        self.attributes = attributes
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.LIST:
+                    self.rowBatches = []
+                    (_etype357, _size354) = iprot.readListBegin()
+                    for _i358 in range(_size354):
+                        _elem359 = BatchMutation()
+                        _elem359.read(iprot)
+                        self.rowBatches.append(_elem359)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.I64:
+                    self.timestamp = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.MAP:
+                    self.attributes = {}
+                    (_ktype361, _vtype362, _size360) = iprot.readMapBegin()
+                    for _i364 in range(_size360):
+                        _key365 = iprot.readBinary()
+                        _val366 = iprot.readBinary()
+                        self.attributes[_key365] = _val366
+                    iprot.readMapEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('mutateRowsTs_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        if self.rowBatches is not None:
+            oprot.writeFieldBegin('rowBatches', TType.LIST, 2)
+            oprot.writeListBegin(TType.STRUCT, len(self.rowBatches))
+            for iter367 in self.rowBatches:
+                iter367.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.timestamp is not None:
+            oprot.writeFieldBegin('timestamp', TType.I64, 3)
+            oprot.writeI64(self.timestamp)
+            oprot.writeFieldEnd()
+        if self.attributes is not None:
+            oprot.writeFieldBegin('attributes', TType.MAP, 4)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.attributes))
+            for kiter368, viter369 in self.attributes.items():
+                oprot.writeBinary(kiter368)
+                oprot.writeBinary(viter369)
+            oprot.writeMapEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(mutateRowsTs_args)
+mutateRowsTs_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+    (2, TType.LIST, 'rowBatches', (TType.STRUCT, [BatchMutation, None], False), None, ),  # 2
+    (3, TType.I64, 'timestamp', None, None, ),  # 3
+    (4, TType.MAP, 'attributes', (TType.STRING, 'BINARY', TType.STRING, 'BINARY', False), None, ),  # 4
+)
+
+
+class mutateRowsTs_result(object):
+    """
+    Attributes:
+     - io
+     - ia
+
+    """
+
+
+    def __init__(self, io=None, ia=None,):
+        self.io = io
+        self.ia = ia
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRUCT:
+                    self.ia = IllegalArgument()
+                    self.ia.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('mutateRowsTs_result')
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        if self.ia is not None:
+            oprot.writeFieldBegin('ia', TType.STRUCT, 2)
+            self.ia.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(mutateRowsTs_result)
+mutateRowsTs_result.thrift_spec = (
+    None,  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+    (2, TType.STRUCT, 'ia', [IllegalArgument, None], None, ),  # 2
+)
+
+
+class atomicIncrement_args(object):
+    """
+    Attributes:
      - tableName: name of table
      - row: row to increment
      - column: name of column
      - value: amount to increment by
-    """
-    pass
 
-  def deleteAll(self, tableName, row, column, attributes):
     """
-    Delete all cells that match the passed row and column.
 
-    Parameters:
+
+    def __init__(self, tableName=None, row=None, column=None, value=None,):
+        self.tableName = tableName
+        self.row = row
+        self.column = column
+        self.value = value
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.row = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.column = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.I64:
+                    self.value = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('atomicIncrement_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        if self.row is not None:
+            oprot.writeFieldBegin('row', TType.STRING, 2)
+            oprot.writeBinary(self.row)
+            oprot.writeFieldEnd()
+        if self.column is not None:
+            oprot.writeFieldBegin('column', TType.STRING, 3)
+            oprot.writeBinary(self.column)
+            oprot.writeFieldEnd()
+        if self.value is not None:
+            oprot.writeFieldBegin('value', TType.I64, 4)
+            oprot.writeI64(self.value)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(atomicIncrement_args)
+atomicIncrement_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+    (2, TType.STRING, 'row', 'BINARY', None, ),  # 2
+    (3, TType.STRING, 'column', 'BINARY', None, ),  # 3
+    (4, TType.I64, 'value', None, None, ),  # 4
+)
+
+
+class atomicIncrement_result(object):
+    """
+    Attributes:
+     - success
+     - io
+     - ia
+
+    """
+
+
+    def __init__(self, success=None, io=None, ia=None,):
+        self.success = success
+        self.io = io
+        self.ia = ia
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 0:
+                if ftype == TType.I64:
+                    self.success = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRUCT:
+                    self.ia = IllegalArgument()
+                    self.ia.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('atomicIncrement_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.I64, 0)
+            oprot.writeI64(self.success)
+            oprot.writeFieldEnd()
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        if self.ia is not None:
+            oprot.writeFieldBegin('ia', TType.STRUCT, 2)
+            self.ia.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(atomicIncrement_result)
+atomicIncrement_result.thrift_spec = (
+    (0, TType.I64, 'success', None, None, ),  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+    (2, TType.STRUCT, 'ia', [IllegalArgument, None], None, ),  # 2
+)
+
+
+class deleteAll_args(object):
+    """
+    Attributes:
      - tableName: name of table
      - row: Row to update
      - column: name of column whose value is to be deleted
      - attributes: Delete attributes
-    """
-    pass
 
-  def deleteAllTs(self, tableName, row, column, timestamp, attributes):
     """
-    Delete all cells that match the passed row and column and whose
-    timestamp is equal-to or older than the passed timestamp.
 
-    Parameters:
+
+    def __init__(self, tableName=None, row=None, column=None, attributes=None,):
+        self.tableName = tableName
+        self.row = row
+        self.column = column
+        self.attributes = attributes
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.row = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.column = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.MAP:
+                    self.attributes = {}
+                    (_ktype371, _vtype372, _size370) = iprot.readMapBegin()
+                    for _i374 in range(_size370):
+                        _key375 = iprot.readBinary()
+                        _val376 = iprot.readBinary()
+                        self.attributes[_key375] = _val376
+                    iprot.readMapEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('deleteAll_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        if self.row is not None:
+            oprot.writeFieldBegin('row', TType.STRING, 2)
+            oprot.writeBinary(self.row)
+            oprot.writeFieldEnd()
+        if self.column is not None:
+            oprot.writeFieldBegin('column', TType.STRING, 3)
+            oprot.writeBinary(self.column)
+            oprot.writeFieldEnd()
+        if self.attributes is not None:
+            oprot.writeFieldBegin('attributes', TType.MAP, 4)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.attributes))
+            for kiter377, viter378 in self.attributes.items():
+                oprot.writeBinary(kiter377)
+                oprot.writeBinary(viter378)
+            oprot.writeMapEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(deleteAll_args)
+deleteAll_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+    (2, TType.STRING, 'row', 'BINARY', None, ),  # 2
+    (3, TType.STRING, 'column', 'BINARY', None, ),  # 3
+    (4, TType.MAP, 'attributes', (TType.STRING, 'BINARY', TType.STRING, 'BINARY', False), None, ),  # 4
+)
+
+
+class deleteAll_result(object):
+    """
+    Attributes:
+     - io
+
+    """
+
+
+    def __init__(self, io=None,):
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('deleteAll_result')
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(deleteAll_result)
+deleteAll_result.thrift_spec = (
+    None,  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class deleteAllTs_args(object):
+    """
+    Attributes:
      - tableName: name of table
      - row: Row to update
      - column: name of column whose value is to be deleted
      - timestamp: timestamp
      - attributes: Delete attributes
-    """
-    pass
 
-  def deleteAllRow(self, tableName, row, attributes):
     """
-    Completely delete the row's cells.
 
-    Parameters:
+
+    def __init__(self, tableName=None, row=None, column=None, timestamp=None, attributes=None,):
+        self.tableName = tableName
+        self.row = row
+        self.column = column
+        self.timestamp = timestamp
+        self.attributes = attributes
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.row = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.column = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.I64:
+                    self.timestamp = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.MAP:
+                    self.attributes = {}
+                    (_ktype380, _vtype381, _size379) = iprot.readMapBegin()
+                    for _i383 in range(_size379):
+                        _key384 = iprot.readBinary()
+                        _val385 = iprot.readBinary()
+                        self.attributes[_key384] = _val385
+                    iprot.readMapEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('deleteAllTs_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        if self.row is not None:
+            oprot.writeFieldBegin('row', TType.STRING, 2)
+            oprot.writeBinary(self.row)
+            oprot.writeFieldEnd()
+        if self.column is not None:
+            oprot.writeFieldBegin('column', TType.STRING, 3)
+            oprot.writeBinary(self.column)
+            oprot.writeFieldEnd()
+        if self.timestamp is not None:
+            oprot.writeFieldBegin('timestamp', TType.I64, 4)
+            oprot.writeI64(self.timestamp)
+            oprot.writeFieldEnd()
+        if self.attributes is not None:
+            oprot.writeFieldBegin('attributes', TType.MAP, 5)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.attributes))
+            for kiter386, viter387 in self.attributes.items():
+                oprot.writeBinary(kiter386)
+                oprot.writeBinary(viter387)
+            oprot.writeMapEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(deleteAllTs_args)
+deleteAllTs_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+    (2, TType.STRING, 'row', 'BINARY', None, ),  # 2
+    (3, TType.STRING, 'column', 'BINARY', None, ),  # 3
+    (4, TType.I64, 'timestamp', None, None, ),  # 4
+    (5, TType.MAP, 'attributes', (TType.STRING, 'BINARY', TType.STRING, 'BINARY', False), None, ),  # 5
+)
+
+
+class deleteAllTs_result(object):
+    """
+    Attributes:
+     - io
+
+    """
+
+
+    def __init__(self, io=None,):
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('deleteAllTs_result')
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(deleteAllTs_result)
+deleteAllTs_result.thrift_spec = (
+    None,  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class deleteAllRow_args(object):
+    """
+    Attributes:
      - tableName: name of table
      - row: key of the row to be completely deleted.
      - attributes: Delete attributes
-    """
-    pass
 
-  def increment(self, increment):
     """
-    Increment a cell by the ammount.
-    Increments can be applied async if hbase.regionserver.thrift.coalesceIncrement is set to true.
-    False is the default.  Turn to true if you need the extra performance and can accept some
-    data loss if a thrift server dies with increments still in the queue.
 
-    Parameters:
+
+    def __init__(self, tableName=None, row=None, attributes=None,):
+        self.tableName = tableName
+        self.row = row
+        self.attributes = attributes
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.tableName = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.row = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.MAP:
+                    self.attributes = {}
+                    (_ktype389, _vtype390, _size388) = iprot.readMapBegin()
+                    for _i392 in range(_size388):
+                        _key393 = iprot.readBinary()
+                        _val394 = iprot.readBinary()
+                        self.attributes[_key393] = _val394
+                    iprot.readMapEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('deleteAllRow_args')
+        if self.tableName is not None:
+            oprot.writeFieldBegin('tableName', TType.STRING, 1)
+            oprot.writeBinary(self.tableName)
+            oprot.writeFieldEnd()
+        if self.row is not None:
+            oprot.writeFieldBegin('row', TType.STRING, 2)
+            oprot.writeBinary(self.row)
+            oprot.writeFieldEnd()
+        if self.attributes is not None:
+            oprot.writeFieldBegin('attributes', TType.MAP, 3)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.attributes))
+            for kiter395, viter396 in self.attributes.items():
+                oprot.writeBinary(kiter395)
+                oprot.writeBinary(viter396)
+            oprot.writeMapEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(deleteAllRow_args)
+deleteAllRow_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRING, 'tableName', 'BINARY', None, ),  # 1
+    (2, TType.STRING, 'row', 'BINARY', None, ),  # 2
+    (3, TType.MAP, 'attributes', (TType.STRING, 'BINARY', TType.STRING, 'BINARY', False), None, ),  # 3
+)
+
+
+class deleteAllRow_result(object):
+    """
+    Attributes:
+     - io
+
+    """
+
+
+    def __init__(self, io=None,):
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('deleteAllRow_result')
+        if self.io is not None:
+            oprot.writeFieldBegin('io', TType.STRUCT, 1)
+            self.io.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(deleteAllRow_result)
+deleteAllRow_result.thrift_spec = (
+    None,  # 0
+    (1, TType.STRUCT, 'io', [IOError, None], None, ),  # 1
+)
+
+
+class increment_args(object):
+    """
+    Attributes:
      - increment: The single increment to apply
-    """
-    pass
 
-  def incrementRows(self, increments):
     """
-    Parameters:
+
+
+    def __init__(self, increment=None,):
+        self.increment = increment
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRUCT:
+                    self.increment = TIncrement()
+                    self.increment.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
+            return
+        oprot.writeStructBegin('increment_args')
+        if self.increment is not None:
+            oprot.writeFieldBegin('increment', TType.STRUCT, 1)
+            self.increment.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+all_structs.append(increment_args)
+increment_args.thrift_spec = (
+    None,  # 0
+    (1, TType.STRUCT, 'increment', [TIncrement, None], None, ),  # 1
+)
+
+
+class increment_result(object):
+    """
+    Attributes:
+     - io
+
+    """
+
+
+    def __init__(self, io=None,):
+        self.io = io
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRUCT:
+                    self.io = IOError()
+                    self.io.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
... 49199 lines suppressed ...