You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ct...@apache.org on 2017/02/09 22:13:17 UTC

[01/10] accumulo git commit: ACCUMULO-4519 patch from Yudong Wu

Repository: accumulo
Updated Branches:
  refs/heads/1.7 13d3f5deb -> a9bf10fff
  refs/heads/1.8 a4ef3e09f -> e86fabb87
  refs/heads/master 1e000359f -> e2247ead5


ACCUMULO-4519 patch from Yudong Wu

Adds missing system permission and namespace functionality to the proxy.


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

Branch: refs/heads/1.7
Commit: 025aacc9fde81d1d51394126fd550f07a71f260e
Parents: 13d3f5d
Author: Michael Wall <mj...@gmail.com>
Authored: Thu Feb 9 16:13:47 2017 -0500
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Thu Feb 9 16:24:18 2017 -0500

----------------------------------------------------------------------
 proxy/src/main/thrift/proxy.thrift | 4 ++++
 1 file changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/025aacc9/proxy/src/main/thrift/proxy.thrift
----------------------------------------------------------------------
diff --git a/proxy/src/main/thrift/proxy.thrift b/proxy/src/main/thrift/proxy.thrift
index 25510d1..00427c0 100644
--- a/proxy/src/main/thrift/proxy.thrift
+++ b/proxy/src/main/thrift/proxy.thrift
@@ -131,6 +131,10 @@ enum SystemPermission {
   DROP_USER = 5,
   ALTER_USER = 6,
   SYSTEM = 7,
+  CREATE_NAMESPACE = 8,
+  DROP_NAMESPACE = 9,
+  ALTER_NAMESPACE = 10,
+  OBTAIN_DELEGATION_TOKEN = 11,
 }
 
 enum ScanType {


[05/10] accumulo git commit: ACCUMULO-4519 regenerate thrift

Posted by ct...@apache.org.
ACCUMULO-4519 regenerate thrift


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

Branch: refs/heads/1.8
Commit: a9bf10ffff62f25d5810816db23ec80d6b06f61b
Parents: 025aacc
Author: Christopher Tubbs <ct...@apache.org>
Authored: Thu Feb 9 16:28:55 2017 -0500
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Thu Feb 9 16:28:55 2017 -0500

----------------------------------------------------------------------
 proxy/src/main/cpp/proxy_types.cpp                    | 14 +++++++++++---
 proxy/src/main/cpp/proxy_types.h                      |  6 +++++-
 .../accumulo/proxy/thrift/SystemPermission.java       | 14 +++++++++++++-
 proxy/src/main/python/ttypes.py                       | 12 ++++++++++++
 proxy/src/main/ruby/proxy_types.rb                    |  8 ++++++--
 5 files changed, 47 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/a9bf10ff/proxy/src/main/cpp/proxy_types.cpp
----------------------------------------------------------------------
diff --git a/proxy/src/main/cpp/proxy_types.cpp b/proxy/src/main/cpp/proxy_types.cpp
index a055b48..4a626f5 100644
--- a/proxy/src/main/cpp/proxy_types.cpp
+++ b/proxy/src/main/cpp/proxy_types.cpp
@@ -70,7 +70,11 @@ int _kSystemPermissionValues[] = {
   SystemPermission::CREATE_USER,
   SystemPermission::DROP_USER,
   SystemPermission::ALTER_USER,
-  SystemPermission::SYSTEM
+  SystemPermission::SYSTEM,
+  SystemPermission::CREATE_NAMESPACE,
+  SystemPermission::DROP_NAMESPACE,
+  SystemPermission::ALTER_NAMESPACE,
+  SystemPermission::OBTAIN_DELEGATION_TOKEN
 };
 const char* _kSystemPermissionNames[] = {
   "GRANT",
@@ -80,9 +84,13 @@ const char* _kSystemPermissionNames[] = {
   "CREATE_USER",
   "DROP_USER",
   "ALTER_USER",
-  "SYSTEM"
+  "SYSTEM",
+  "CREATE_NAMESPACE",
+  "DROP_NAMESPACE",
+  "ALTER_NAMESPACE",
+  "OBTAIN_DELEGATION_TOKEN"
 };
-const std::map<int, const char*> _SystemPermission_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(8, _kSystemPermissionValues, _kSystemPermissionNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+const std::map<int, const char*> _SystemPermission_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(12, _kSystemPermissionValues, _kSystemPermissionNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
 
 int _kScanTypeValues[] = {
   ScanType::SINGLE,

http://git-wip-us.apache.org/repos/asf/accumulo/blob/a9bf10ff/proxy/src/main/cpp/proxy_types.h
----------------------------------------------------------------------
diff --git a/proxy/src/main/cpp/proxy_types.h b/proxy/src/main/cpp/proxy_types.h
index 569de88..c0169ef 100644
--- a/proxy/src/main/cpp/proxy_types.h
+++ b/proxy/src/main/cpp/proxy_types.h
@@ -68,7 +68,11 @@ struct SystemPermission {
     CREATE_USER = 4,
     DROP_USER = 5,
     ALTER_USER = 6,
-    SYSTEM = 7
+    SYSTEM = 7,
+    CREATE_NAMESPACE = 8,
+    DROP_NAMESPACE = 9,
+    ALTER_NAMESPACE = 10,
+    OBTAIN_DELEGATION_TOKEN = 11
   };
 };
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/a9bf10ff/proxy/src/main/java/org/apache/accumulo/proxy/thrift/SystemPermission.java
----------------------------------------------------------------------
diff --git a/proxy/src/main/java/org/apache/accumulo/proxy/thrift/SystemPermission.java b/proxy/src/main/java/org/apache/accumulo/proxy/thrift/SystemPermission.java
index 929b83a..6ebb69a 100644
--- a/proxy/src/main/java/org/apache/accumulo/proxy/thrift/SystemPermission.java
+++ b/proxy/src/main/java/org/apache/accumulo/proxy/thrift/SystemPermission.java
@@ -35,7 +35,11 @@ import org.apache.thrift.TEnum;
   CREATE_USER(4),
   DROP_USER(5),
   ALTER_USER(6),
-  SYSTEM(7);
+  SYSTEM(7),
+  CREATE_NAMESPACE(8),
+  DROP_NAMESPACE(9),
+  ALTER_NAMESPACE(10),
+  OBTAIN_DELEGATION_TOKEN(11);
 
   private final int value;
 
@@ -72,6 +76,14 @@ import org.apache.thrift.TEnum;
         return ALTER_USER;
       case 7:
         return SYSTEM;
+      case 8:
+        return CREATE_NAMESPACE;
+      case 9:
+        return DROP_NAMESPACE;
+      case 10:
+        return ALTER_NAMESPACE;
+      case 11:
+        return OBTAIN_DELEGATION_TOKEN;
       default:
         return null;
     }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/a9bf10ff/proxy/src/main/python/ttypes.py
----------------------------------------------------------------------
diff --git a/proxy/src/main/python/ttypes.py b/proxy/src/main/python/ttypes.py
index 9444f71..a748c0a 100644
--- a/proxy/src/main/python/ttypes.py
+++ b/proxy/src/main/python/ttypes.py
@@ -91,6 +91,10 @@ class SystemPermission:
   DROP_USER = 5
   ALTER_USER = 6
   SYSTEM = 7
+  CREATE_NAMESPACE = 8
+  DROP_NAMESPACE = 9
+  ALTER_NAMESPACE = 10
+  OBTAIN_DELEGATION_TOKEN = 11
 
   _VALUES_TO_NAMES = {
     0: "GRANT",
@@ -101,6 +105,10 @@ class SystemPermission:
     5: "DROP_USER",
     6: "ALTER_USER",
     7: "SYSTEM",
+    8: "CREATE_NAMESPACE",
+    9: "DROP_NAMESPACE",
+    10: "ALTER_NAMESPACE",
+    11: "OBTAIN_DELEGATION_TOKEN",
   }
 
   _NAMES_TO_VALUES = {
@@ -112,6 +120,10 @@ class SystemPermission:
     "DROP_USER": 5,
     "ALTER_USER": 6,
     "SYSTEM": 7,
+    "CREATE_NAMESPACE": 8,
+    "DROP_NAMESPACE": 9,
+    "ALTER_NAMESPACE": 10,
+    "OBTAIN_DELEGATION_TOKEN": 11,
   }
 
 class ScanType:

http://git-wip-us.apache.org/repos/asf/accumulo/blob/a9bf10ff/proxy/src/main/ruby/proxy_types.rb
----------------------------------------------------------------------
diff --git a/proxy/src/main/ruby/proxy_types.rb b/proxy/src/main/ruby/proxy_types.rb
index 57306d1..522c80c 100644
--- a/proxy/src/main/ruby/proxy_types.rb
+++ b/proxy/src/main/ruby/proxy_types.rb
@@ -52,8 +52,12 @@ module Accumulo
     DROP_USER = 5
     ALTER_USER = 6
     SYSTEM = 7
-    VALUE_MAP = {0 => "GRANT", 1 => "CREATE_TABLE", 2 => "DROP_TABLE", 3 => "ALTER_TABLE", 4 => "CREATE_USER", 5 => "DROP_USER", 6 => "ALTER_USER", 7 => "SYSTEM"}
-    VALID_VALUES = Set.new([GRANT, CREATE_TABLE, DROP_TABLE, ALTER_TABLE, CREATE_USER, DROP_USER, ALTER_USER, SYSTEM]).freeze
+    CREATE_NAMESPACE = 8
+    DROP_NAMESPACE = 9
+    ALTER_NAMESPACE = 10
+    OBTAIN_DELEGATION_TOKEN = 11
+    VALUE_MAP = {0 => "GRANT", 1 => "CREATE_TABLE", 2 => "DROP_TABLE", 3 => "ALTER_TABLE", 4 => "CREATE_USER", 5 => "DROP_USER", 6 => "ALTER_USER", 7 => "SYSTEM", 8 => "CREATE_NAMESPACE", 9 => "DROP_NAMESPACE", 10 => "ALTER_NAMESPACE", 11 => "OBTAIN_DELEGATION_TOKEN"}
+    VALID_VALUES = Set.new([GRANT, CREATE_TABLE, DROP_TABLE, ALTER_TABLE, CREATE_USER, DROP_USER, ALTER_USER, SYSTEM, CREATE_NAMESPACE, DROP_NAMESPACE, ALTER_NAMESPACE, OBTAIN_DELEGATION_TOKEN]).freeze
   end
 
   module ScanType


[10/10] accumulo git commit: Merge branch '1.8'

Posted by ct...@apache.org.
Merge branch '1.8'

This closes #217


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

Branch: refs/heads/master
Commit: e2247ead5bee94dd538fcfdf04de2f8d1c0c06d8
Parents: 1e00035 e86fabb
Author: Christopher Tubbs <ct...@apache.org>
Authored: Thu Feb 9 17:11:12 2017 -0500
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Thu Feb 9 17:11:12 2017 -0500

----------------------------------------------------------------------
 proxy/src/main/cpp/proxy_types.cpp                    | 14 +++++++++++---
 proxy/src/main/cpp/proxy_types.h                      |  6 +++++-
 .../accumulo/proxy/thrift/SystemPermission.java       | 14 +++++++++++++-
 proxy/src/main/python/ttypes.py                       | 12 ++++++++++++
 proxy/src/main/ruby/proxy_types.rb                    |  8 ++++++--
 proxy/src/main/thrift/proxy.thrift                    |  4 ++++
 6 files changed, 51 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/e2247ead/proxy/src/main/cpp/proxy_types.cpp
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/accumulo/blob/e2247ead/proxy/src/main/cpp/proxy_types.h
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/accumulo/blob/e2247ead/proxy/src/main/java/org/apache/accumulo/proxy/thrift/SystemPermission.java
----------------------------------------------------------------------


[07/10] accumulo git commit: Merge branch '1.7' into 1.8

Posted by ct...@apache.org.
Merge branch '1.7' into 1.8


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

Branch: refs/heads/1.8
Commit: e86fabb87730abce15ca8f66459cdd44372aeadf
Parents: a4ef3e0 a9bf10f
Author: Christopher Tubbs <ct...@apache.org>
Authored: Thu Feb 9 16:45:46 2017 -0500
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Thu Feb 9 16:45:46 2017 -0500

----------------------------------------------------------------------
 proxy/src/main/cpp/proxy_types.cpp                    | 14 +++++++++++---
 proxy/src/main/cpp/proxy_types.h                      |  6 +++++-
 .../accumulo/proxy/thrift/SystemPermission.java       | 14 +++++++++++++-
 proxy/src/main/python/ttypes.py                       | 12 ++++++++++++
 proxy/src/main/ruby/proxy_types.rb                    |  8 ++++++--
 proxy/src/main/thrift/proxy.thrift                    |  4 ++++
 6 files changed, 51 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/e86fabb8/proxy/src/main/cpp/proxy_types.cpp
----------------------------------------------------------------------
diff --cc proxy/src/main/cpp/proxy_types.cpp
index 09c2d9c,4a626f5..87ef7ac
--- a/proxy/src/main/cpp/proxy_types.cpp
+++ b/proxy/src/main/cpp/proxy_types.cpp
@@@ -83,34 -84,14 +87,38 @@@ const char* _kSystemPermissionNames[] 
    "CREATE_USER",
    "DROP_USER",
    "ALTER_USER",
-   "SYSTEM"
+   "SYSTEM",
+   "CREATE_NAMESPACE",
+   "DROP_NAMESPACE",
+   "ALTER_NAMESPACE",
+   "OBTAIN_DELEGATION_TOKEN"
  };
- const std::map<int, const char*> _SystemPermission_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(8, _kSystemPermissionValues, _kSystemPermissionNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+ const std::map<int, const char*> _SystemPermission_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(12, _kSystemPermissionValues, _kSystemPermissionNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
  
 +int _kNamespacePermissionValues[] = {
 +  NamespacePermission::READ,
 +  NamespacePermission::WRITE,
 +  NamespacePermission::ALTER_NAMESPACE,
 +  NamespacePermission::GRANT,
 +  NamespacePermission::ALTER_TABLE,
 +  NamespacePermission::CREATE_TABLE,
 +  NamespacePermission::DROP_TABLE,
 +  NamespacePermission::BULK_IMPORT,
 +  NamespacePermission::DROP_NAMESPACE
 +};
 +const char* _kNamespacePermissionNames[] = {
 +  "READ",
 +  "WRITE",
 +  "ALTER_NAMESPACE",
 +  "GRANT",
 +  "ALTER_TABLE",
 +  "CREATE_TABLE",
 +  "DROP_TABLE",
 +  "BULK_IMPORT",
 +  "DROP_NAMESPACE"
 +};
 +const std::map<int, const char*> _NamespacePermission_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(9, _kNamespacePermissionValues, _kNamespacePermissionNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
 +
  int _kScanTypeValues[] = {
    ScanType::SINGLE,
    ScanType::BATCH

http://git-wip-us.apache.org/repos/asf/accumulo/blob/e86fabb8/proxy/src/main/cpp/proxy_types.h
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/accumulo/blob/e86fabb8/proxy/src/main/java/org/apache/accumulo/proxy/thrift/SystemPermission.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/accumulo/blob/e86fabb8/proxy/src/main/python/ttypes.py
----------------------------------------------------------------------
diff --cc proxy/src/main/python/ttypes.py
index 87a977d,a748c0a..3f9ec9c
--- a/proxy/src/main/python/ttypes.py
+++ b/proxy/src/main/python/ttypes.py
@@@ -112,43 -120,12 +120,47 @@@ class SystemPermission
      "DROP_USER": 5,
      "ALTER_USER": 6,
      "SYSTEM": 7,
+     "CREATE_NAMESPACE": 8,
+     "DROP_NAMESPACE": 9,
+     "ALTER_NAMESPACE": 10,
+     "OBTAIN_DELEGATION_TOKEN": 11,
    }
  
 +class NamespacePermission:
 +  READ = 0
 +  WRITE = 1
 +  ALTER_NAMESPACE = 2
 +  GRANT = 3
 +  ALTER_TABLE = 4
 +  CREATE_TABLE = 5
 +  DROP_TABLE = 6
 +  BULK_IMPORT = 7
 +  DROP_NAMESPACE = 8
 +
 +  _VALUES_TO_NAMES = {
 +    0: "READ",
 +    1: "WRITE",
 +    2: "ALTER_NAMESPACE",
 +    3: "GRANT",
 +    4: "ALTER_TABLE",
 +    5: "CREATE_TABLE",
 +    6: "DROP_TABLE",
 +    7: "BULK_IMPORT",
 +    8: "DROP_NAMESPACE",
 +  }
 +
 +  _NAMES_TO_VALUES = {
 +    "READ": 0,
 +    "WRITE": 1,
 +    "ALTER_NAMESPACE": 2,
 +    "GRANT": 3,
 +    "ALTER_TABLE": 4,
 +    "CREATE_TABLE": 5,
 +    "DROP_TABLE": 6,
 +    "BULK_IMPORT": 7,
 +    "DROP_NAMESPACE": 8,
 +  }
 +
  class ScanType:
    SINGLE = 0
    BATCH = 1

http://git-wip-us.apache.org/repos/asf/accumulo/blob/e86fabb8/proxy/src/main/ruby/proxy_types.rb
----------------------------------------------------------------------
diff --cc proxy/src/main/ruby/proxy_types.rb
index e542df6,522c80c..ddf8a18
--- a/proxy/src/main/ruby/proxy_types.rb
+++ b/proxy/src/main/ruby/proxy_types.rb
@@@ -52,24 -52,14 +52,28 @@@ module Accumul
      DROP_USER = 5
      ALTER_USER = 6
      SYSTEM = 7
-     VALUE_MAP = {0 => "GRANT", 1 => "CREATE_TABLE", 2 => "DROP_TABLE", 3 => "ALTER_TABLE", 4 => "CREATE_USER", 5 => "DROP_USER", 6 => "ALTER_USER", 7 => "SYSTEM"}
-     VALID_VALUES = Set.new([GRANT, CREATE_TABLE, DROP_TABLE, ALTER_TABLE, CREATE_USER, DROP_USER, ALTER_USER, SYSTEM]).freeze
+     CREATE_NAMESPACE = 8
+     DROP_NAMESPACE = 9
+     ALTER_NAMESPACE = 10
+     OBTAIN_DELEGATION_TOKEN = 11
+     VALUE_MAP = {0 => "GRANT", 1 => "CREATE_TABLE", 2 => "DROP_TABLE", 3 => "ALTER_TABLE", 4 => "CREATE_USER", 5 => "DROP_USER", 6 => "ALTER_USER", 7 => "SYSTEM", 8 => "CREATE_NAMESPACE", 9 => "DROP_NAMESPACE", 10 => "ALTER_NAMESPACE", 11 => "OBTAIN_DELEGATION_TOKEN"}
+     VALID_VALUES = Set.new([GRANT, CREATE_TABLE, DROP_TABLE, ALTER_TABLE, CREATE_USER, DROP_USER, ALTER_USER, SYSTEM, CREATE_NAMESPACE, DROP_NAMESPACE, ALTER_NAMESPACE, OBTAIN_DELEGATION_TOKEN]).freeze
    end
  
 +  module NamespacePermission
 +    READ = 0
 +    WRITE = 1
 +    ALTER_NAMESPACE = 2
 +    GRANT = 3
 +    ALTER_TABLE = 4
 +    CREATE_TABLE = 5
 +    DROP_TABLE = 6
 +    BULK_IMPORT = 7
 +    DROP_NAMESPACE = 8
 +    VALUE_MAP = {0 => "READ", 1 => "WRITE", 2 => "ALTER_NAMESPACE", 3 => "GRANT", 4 => "ALTER_TABLE", 5 => "CREATE_TABLE", 6 => "DROP_TABLE", 7 => "BULK_IMPORT", 8 => "DROP_NAMESPACE"}
 +    VALID_VALUES = Set.new([READ, WRITE, ALTER_NAMESPACE, GRANT, ALTER_TABLE, CREATE_TABLE, DROP_TABLE, BULK_IMPORT, DROP_NAMESPACE]).freeze
 +  end
 +
    module ScanType
      SINGLE = 0
      BATCH = 1

http://git-wip-us.apache.org/repos/asf/accumulo/blob/e86fabb8/proxy/src/main/thrift/proxy.thrift
----------------------------------------------------------------------
diff --cc proxy/src/main/thrift/proxy.thrift
index 3814c44,00427c0..e15990c
--- a/proxy/src/main/thrift/proxy.thrift
+++ b/proxy/src/main/thrift/proxy.thrift
@@@ -131,20 -131,12 +131,24 @@@ enum SystemPermission 
    DROP_USER = 5,
    ALTER_USER = 6,
    SYSTEM = 7,
+   CREATE_NAMESPACE = 8,
+   DROP_NAMESPACE = 9,
+   ALTER_NAMESPACE = 10,
+   OBTAIN_DELEGATION_TOKEN = 11,
  }
  
 +enum NamespacePermission {
 +  READ = 0,
 +  WRITE = 1,
 +  ALTER_NAMESPACE = 2,
 +  GRANT = 3,
 +  ALTER_TABLE = 4,
 +  CREATE_TABLE = 5,
 +  DROP_TABLE = 6,
 +  BULK_IMPORT = 7,
 +  DROP_NAMESPACE = 8
 +}
 +
  enum ScanType {
      SINGLE,
      BATCH


[09/10] accumulo git commit: Merge branch '1.8'

Posted by ct...@apache.org.
http://git-wip-us.apache.org/repos/asf/accumulo/blob/e2247ead/proxy/src/main/python/ttypes.py
----------------------------------------------------------------------
diff --cc proxy/src/main/python/ttypes.py
index 69269bc,3f9ec9c..ca90543
--- a/proxy/src/main/python/ttypes.py
+++ b/proxy/src/main/python/ttypes.py
@@@ -20,3136 -20,3360 +20,3148 @@@
  #  options string: py
  #
  
 -from thrift.Thrift import TType, TMessageType, TException, TApplicationException
 +from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, TApplicationException
 +from thrift.protocol.TProtocol import TProtocolException
 +import sys
  
  from thrift.transport import TTransport
 -from thrift.protocol import TBinaryProtocol, TProtocol
 -try:
 -  from thrift.protocol import fastbinary
 -except:
 -  fastbinary = None
 -
 -
 -class PartialKey:
 -  ROW = 0
 -  ROW_COLFAM = 1
 -  ROW_COLFAM_COLQUAL = 2
 -  ROW_COLFAM_COLQUAL_COLVIS = 3
 -  ROW_COLFAM_COLQUAL_COLVIS_TIME = 4
 -  ROW_COLFAM_COLQUAL_COLVIS_TIME_DEL = 5
 -
 -  _VALUES_TO_NAMES = {
 -    0: "ROW",
 -    1: "ROW_COLFAM",
 -    2: "ROW_COLFAM_COLQUAL",
 -    3: "ROW_COLFAM_COLQUAL_COLVIS",
 -    4: "ROW_COLFAM_COLQUAL_COLVIS_TIME",
 -    5: "ROW_COLFAM_COLQUAL_COLVIS_TIME_DEL",
 -  }
 -
 -  _NAMES_TO_VALUES = {
 -    "ROW": 0,
 -    "ROW_COLFAM": 1,
 -    "ROW_COLFAM_COLQUAL": 2,
 -    "ROW_COLFAM_COLQUAL_COLVIS": 3,
 -    "ROW_COLFAM_COLQUAL_COLVIS_TIME": 4,
 -    "ROW_COLFAM_COLQUAL_COLVIS_TIME_DEL": 5,
 -  }
 -
 -class TablePermission:
 -  READ = 2
 -  WRITE = 3
 -  BULK_IMPORT = 4
 -  ALTER_TABLE = 5
 -  GRANT = 6
 -  DROP_TABLE = 7
 -
 -  _VALUES_TO_NAMES = {
 -    2: "READ",
 -    3: "WRITE",
 -    4: "BULK_IMPORT",
 -    5: "ALTER_TABLE",
 -    6: "GRANT",
 -    7: "DROP_TABLE",
 -  }
 -
 -  _NAMES_TO_VALUES = {
 -    "READ": 2,
 -    "WRITE": 3,
 -    "BULK_IMPORT": 4,
 -    "ALTER_TABLE": 5,
 -    "GRANT": 6,
 -    "DROP_TABLE": 7,
 -  }
 -
 -class SystemPermission:
 -  GRANT = 0
 -  CREATE_TABLE = 1
 -  DROP_TABLE = 2
 -  ALTER_TABLE = 3
 -  CREATE_USER = 4
 -  DROP_USER = 5
 -  ALTER_USER = 6
 -  SYSTEM = 7
 -  CREATE_NAMESPACE = 8
 -  DROP_NAMESPACE = 9
 -  ALTER_NAMESPACE = 10
 -  OBTAIN_DELEGATION_TOKEN = 11
 -
 -  _VALUES_TO_NAMES = {
 -    0: "GRANT",
 -    1: "CREATE_TABLE",
 -    2: "DROP_TABLE",
 -    3: "ALTER_TABLE",
 -    4: "CREATE_USER",
 -    5: "DROP_USER",
 -    6: "ALTER_USER",
 -    7: "SYSTEM",
 -    8: "CREATE_NAMESPACE",
 -    9: "DROP_NAMESPACE",
 -    10: "ALTER_NAMESPACE",
 -    11: "OBTAIN_DELEGATION_TOKEN",
 -  }
 -
 -  _NAMES_TO_VALUES = {
 -    "GRANT": 0,
 -    "CREATE_TABLE": 1,
 -    "DROP_TABLE": 2,
 -    "ALTER_TABLE": 3,
 -    "CREATE_USER": 4,
 -    "DROP_USER": 5,
 -    "ALTER_USER": 6,
 -    "SYSTEM": 7,
 -    "CREATE_NAMESPACE": 8,
 -    "DROP_NAMESPACE": 9,
 -    "ALTER_NAMESPACE": 10,
 -    "OBTAIN_DELEGATION_TOKEN": 11,
 -  }
 -
 -class NamespacePermission:
 -  READ = 0
 -  WRITE = 1
 -  ALTER_NAMESPACE = 2
 -  GRANT = 3
 -  ALTER_TABLE = 4
 -  CREATE_TABLE = 5
 -  DROP_TABLE = 6
 -  BULK_IMPORT = 7
 -  DROP_NAMESPACE = 8
 -
 -  _VALUES_TO_NAMES = {
 -    0: "READ",
 -    1: "WRITE",
 -    2: "ALTER_NAMESPACE",
 -    3: "GRANT",
 -    4: "ALTER_TABLE",
 -    5: "CREATE_TABLE",
 -    6: "DROP_TABLE",
 -    7: "BULK_IMPORT",
 -    8: "DROP_NAMESPACE",
 -  }
 -
 -  _NAMES_TO_VALUES = {
 -    "READ": 0,
 -    "WRITE": 1,
 -    "ALTER_NAMESPACE": 2,
 -    "GRANT": 3,
 -    "ALTER_TABLE": 4,
 -    "CREATE_TABLE": 5,
 -    "DROP_TABLE": 6,
 -    "BULK_IMPORT": 7,
 -    "DROP_NAMESPACE": 8,
 -  }
 -
 -class ScanType:
 -  SINGLE = 0
 -  BATCH = 1
 -
 -  _VALUES_TO_NAMES = {
 -    0: "SINGLE",
 -    1: "BATCH",
 -  }
 -
 -  _NAMES_TO_VALUES = {
 -    "SINGLE": 0,
 -    "BATCH": 1,
 -  }
 -
 -class ScanState:
 -  IDLE = 0
 -  RUNNING = 1
 -  QUEUED = 2
 -
 -  _VALUES_TO_NAMES = {
 -    0: "IDLE",
 -    1: "RUNNING",
 -    2: "QUEUED",
 -  }
 -
 -  _NAMES_TO_VALUES = {
 -    "IDLE": 0,
 -    "RUNNING": 1,
 -    "QUEUED": 2,
 -  }
 -
 -class ConditionalStatus:
 -  ACCEPTED = 0
 -  REJECTED = 1
 -  VIOLATED = 2
 -  UNKNOWN = 3
 -  INVISIBLE_VISIBILITY = 4
 -
 -  _VALUES_TO_NAMES = {
 -    0: "ACCEPTED",
 -    1: "REJECTED",
 -    2: "VIOLATED",
 -    3: "UNKNOWN",
 -    4: "INVISIBLE_VISIBILITY",
 -  }
 -
 -  _NAMES_TO_VALUES = {
 -    "ACCEPTED": 0,
 -    "REJECTED": 1,
 -    "VIOLATED": 2,
 -    "UNKNOWN": 3,
 -    "INVISIBLE_VISIBILITY": 4,
 -  }
 -
 -class Durability:
 -  DEFAULT = 0
 -  NONE = 1
 -  LOG = 2
 -  FLUSH = 3
 -  SYNC = 4
 -
 -  _VALUES_TO_NAMES = {
 -    0: "DEFAULT",
 -    1: "NONE",
 -    2: "LOG",
 -    3: "FLUSH",
 -    4: "SYNC",
 -  }
 -
 -  _NAMES_TO_VALUES = {
 -    "DEFAULT": 0,
 -    "NONE": 1,
 -    "LOG": 2,
 -    "FLUSH": 3,
 -    "SYNC": 4,
 -  }
 -
 -class CompactionType:
 -  MINOR = 0
 -  MERGE = 1
 -  MAJOR = 2
 -  FULL = 3
 -
 -  _VALUES_TO_NAMES = {
 -    0: "MINOR",
 -    1: "MERGE",
 -    2: "MAJOR",
 -    3: "FULL",
 -  }
 -
 -  _NAMES_TO_VALUES = {
 -    "MINOR": 0,
 -    "MERGE": 1,
 -    "MAJOR": 2,
 -    "FULL": 3,
 -  }
 -
 -class CompactionReason:
 -  USER = 0
 -  SYSTEM = 1
 -  CHOP = 2
 -  IDLE = 3
 -  CLOSE = 4
 -
 -  _VALUES_TO_NAMES = {
 -    0: "USER",
 -    1: "SYSTEM",
 -    2: "CHOP",
 -    3: "IDLE",
 -    4: "CLOSE",
 -  }
 -
 -  _NAMES_TO_VALUES = {
 -    "USER": 0,
 -    "SYSTEM": 1,
 -    "CHOP": 2,
 -    "IDLE": 3,
 -    "CLOSE": 4,
 -  }
 -
 -class IteratorScope:
 -  MINC = 0
 -  MAJC = 1
 -  SCAN = 2
 -
 -  _VALUES_TO_NAMES = {
 -    0: "MINC",
 -    1: "MAJC",
 -    2: "SCAN",
 -  }
 -
 -  _NAMES_TO_VALUES = {
 -    "MINC": 0,
 -    "MAJC": 1,
 -    "SCAN": 2,
 -  }
 -
 -class TimeType:
 -  LOGICAL = 0
 -  MILLIS = 1
 -
 -  _VALUES_TO_NAMES = {
 -    0: "LOGICAL",
 -    1: "MILLIS",
 -  }
 -
 -  _NAMES_TO_VALUES = {
 -    "LOGICAL": 0,
 -    "MILLIS": 1,
 -  }
 -
 -
 -class Key:
 -  """
 -  Attributes:
 -   - row
 -   - colFamily
 -   - colQualifier
 -   - colVisibility
 -   - timestamp
 -  """
 -
 -  thrift_spec = (
 -    None, # 0
 -    (1, TType.STRING, 'row', None, None, ), # 1
 -    (2, TType.STRING, 'colFamily', None, None, ), # 2
 -    (3, TType.STRING, 'colQualifier', None, None, ), # 3
 -    (4, TType.STRING, 'colVisibility', None, None, ), # 4
 -    (5, TType.I64, 'timestamp', None, 9223372036854775807, ), # 5
 -  )
 -
 -  def __init__(self, row=None, colFamily=None, colQualifier=None, colVisibility=None, timestamp=thrift_spec[5][4],):
 -    self.row = row
 -    self.colFamily = colFamily
 -    self.colQualifier = colQualifier
 -    self.colVisibility = colVisibility
 -    self.timestamp = timestamp
 -
 -  def read(self, iprot):
 -    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
 -      fastbinary.decode_binary(self, iprot.trans, (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.row = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 2:
 -        if ftype == TType.STRING:
 -          self.colFamily = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 3:
 -        if ftype == TType.STRING:
 -          self.colQualifier = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 4:
 -        if ftype == TType.STRING:
 -          self.colVisibility = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 5:
 -        if ftype == TType.I64:
 -          self.timestamp = iprot.readI64()
 -        else:
 -          iprot.skip(ftype)
 -      else:
 -        iprot.skip(ftype)
 -      iprot.readFieldEnd()
 -    iprot.readStructEnd()
 -
 -  def write(self, oprot):
 -    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
 -      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
 -      return
 -    oprot.writeStructBegin('Key')
 -    if self.row is not None:
 -      oprot.writeFieldBegin('row', TType.STRING, 1)
 -      oprot.writeString(self.row)
 -      oprot.writeFieldEnd()
 -    if self.colFamily is not None:
 -      oprot.writeFieldBegin('colFamily', TType.STRING, 2)
 -      oprot.writeString(self.colFamily)
 -      oprot.writeFieldEnd()
 -    if self.colQualifier is not None:
 -      oprot.writeFieldBegin('colQualifier', TType.STRING, 3)
 -      oprot.writeString(self.colQualifier)
 -      oprot.writeFieldEnd()
 -    if self.colVisibility is not None:
 -      oprot.writeFieldBegin('colVisibility', TType.STRING, 4)
 -      oprot.writeString(self.colVisibility)
 -      oprot.writeFieldEnd()
 -    if self.timestamp is not None:
 -      oprot.writeFieldBegin('timestamp', TType.I64, 5)
 -      oprot.writeI64(self.timestamp)
 -      oprot.writeFieldEnd()
 -    oprot.writeFieldStop()
 -    oprot.writeStructEnd()
 -
 -  def validate(self):
 -    return
 -
 -
 -  def __hash__(self):
 -    value = 17
 -    value = (value * 31) ^ hash(self.row)
 -    value = (value * 31) ^ hash(self.colFamily)
 -    value = (value * 31) ^ hash(self.colQualifier)
 -    value = (value * 31) ^ hash(self.colVisibility)
 -    value = (value * 31) ^ hash(self.timestamp)
 -    return value
 -
 -  def __repr__(self):
 -    L = ['%s=%r' % (key, value)
 -      for key, value in self.__dict__.iteritems()]
 -    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)
 -
 -class ColumnUpdate:
 -  """
 -  Attributes:
 -   - colFamily
 -   - colQualifier
 -   - colVisibility
 -   - timestamp
 -   - value
 -   - deleteCell
 -  """
 -
 -  thrift_spec = (
 -    None, # 0
 -    (1, TType.STRING, 'colFamily', None, None, ), # 1
 -    (2, TType.STRING, 'colQualifier', None, None, ), # 2
 -    (3, TType.STRING, 'colVisibility', None, None, ), # 3
 -    (4, TType.I64, 'timestamp', None, None, ), # 4
 -    (5, TType.STRING, 'value', None, None, ), # 5
 -    (6, TType.BOOL, 'deleteCell', None, None, ), # 6
 -  )
 -
 -  def __init__(self, colFamily=None, colQualifier=None, colVisibility=None, timestamp=None, value=None, deleteCell=None,):
 -    self.colFamily = colFamily
 -    self.colQualifier = colQualifier
 -    self.colVisibility = colVisibility
 -    self.timestamp = timestamp
 -    self.value = value
 -    self.deleteCell = deleteCell
 -
 -  def read(self, iprot):
 -    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
 -      fastbinary.decode_binary(self, iprot.trans, (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.colFamily = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 2:
 -        if ftype == TType.STRING:
 -          self.colQualifier = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 3:
 -        if ftype == TType.STRING:
 -          self.colVisibility = iprot.readString()
 -        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.STRING:
 -          self.value = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 6:
 -        if ftype == TType.BOOL:
 -          self.deleteCell = iprot.readBool()
 -        else:
 -          iprot.skip(ftype)
 -      else:
 -        iprot.skip(ftype)
 -      iprot.readFieldEnd()
 -    iprot.readStructEnd()
 -
 -  def write(self, oprot):
 -    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
 -      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
 -      return
 -    oprot.writeStructBegin('ColumnUpdate')
 -    if self.colFamily is not None:
 -      oprot.writeFieldBegin('colFamily', TType.STRING, 1)
 -      oprot.writeString(self.colFamily)
 -      oprot.writeFieldEnd()
 -    if self.colQualifier is not None:
 -      oprot.writeFieldBegin('colQualifier', TType.STRING, 2)
 -      oprot.writeString(self.colQualifier)
 -      oprot.writeFieldEnd()
 -    if self.colVisibility is not None:
 -      oprot.writeFieldBegin('colVisibility', TType.STRING, 3)
 -      oprot.writeString(self.colVisibility)
 -      oprot.writeFieldEnd()
 -    if self.timestamp is not None:
 -      oprot.writeFieldBegin('timestamp', TType.I64, 4)
 -      oprot.writeI64(self.timestamp)
 -      oprot.writeFieldEnd()
 -    if self.value is not None:
 -      oprot.writeFieldBegin('value', TType.STRING, 5)
 -      oprot.writeString(self.value)
 -      oprot.writeFieldEnd()
 -    if self.deleteCell is not None:
 -      oprot.writeFieldBegin('deleteCell', TType.BOOL, 6)
 -      oprot.writeBool(self.deleteCell)
 -      oprot.writeFieldEnd()
 -    oprot.writeFieldStop()
 -    oprot.writeStructEnd()
 -
 -  def validate(self):
 -    return
 -
 -
 -  def __hash__(self):
 -    value = 17
 -    value = (value * 31) ^ hash(self.colFamily)
 -    value = (value * 31) ^ hash(self.colQualifier)
 -    value = (value * 31) ^ hash(self.colVisibility)
 -    value = (value * 31) ^ hash(self.timestamp)
 -    value = (value * 31) ^ hash(self.value)
 -    value = (value * 31) ^ hash(self.deleteCell)
 -    return value
 -
 -  def __repr__(self):
 -    L = ['%s=%r' % (key, value)
 -      for key, value in self.__dict__.iteritems()]
 -    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)
 -
 -class DiskUsage:
 -  """
 -  Attributes:
 -   - tables
 -   - usage
 -  """
 -
 -  thrift_spec = (
 -    None, # 0
 -    (1, TType.LIST, 'tables', (TType.STRING,None), None, ), # 1
 -    (2, TType.I64, 'usage', None, None, ), # 2
 -  )
 -
 -  def __init__(self, tables=None, usage=None,):
 -    self.tables = tables
 -    self.usage = usage
 -
 -  def read(self, iprot):
 -    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
 -      fastbinary.decode_binary(self, iprot.trans, (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.LIST:
 -          self.tables = []
 -          (_etype3, _size0) = iprot.readListBegin()
 -          for _i4 in xrange(_size0):
 -            _elem5 = iprot.readString()
 -            self.tables.append(_elem5)
 -          iprot.readListEnd()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 2:
 -        if ftype == TType.I64:
 -          self.usage = iprot.readI64()
 -        else:
 -          iprot.skip(ftype)
 -      else:
 -        iprot.skip(ftype)
 -      iprot.readFieldEnd()
 -    iprot.readStructEnd()
 -
 -  def write(self, oprot):
 -    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
 -      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
 -      return
 -    oprot.writeStructBegin('DiskUsage')
 -    if self.tables is not None:
 -      oprot.writeFieldBegin('tables', TType.LIST, 1)
 -      oprot.writeListBegin(TType.STRING, len(self.tables))
 -      for iter6 in self.tables:
 -        oprot.writeString(iter6)
 -      oprot.writeListEnd()
 -      oprot.writeFieldEnd()
 -    if self.usage is not None:
 -      oprot.writeFieldBegin('usage', TType.I64, 2)
 -      oprot.writeI64(self.usage)
 -      oprot.writeFieldEnd()
 -    oprot.writeFieldStop()
 -    oprot.writeStructEnd()
 -
 -  def validate(self):
 -    return
 -
 -
 -  def __hash__(self):
 -    value = 17
 -    value = (value * 31) ^ hash(self.tables)
 -    value = (value * 31) ^ hash(self.usage)
 -    return value
 -
 -  def __repr__(self):
 -    L = ['%s=%r' % (key, value)
 -      for key, value in self.__dict__.iteritems()]
 -    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)
 -
 -class KeyValue:
 -  """
 -  Attributes:
 -   - key
 -   - value
 -  """
 -
 -  thrift_spec = (
 -    None, # 0
 -    (1, TType.STRUCT, 'key', (Key, Key.thrift_spec), None, ), # 1
 -    (2, TType.STRING, 'value', None, None, ), # 2
 -  )
 -
 -  def __init__(self, key=None, value=None,):
 -    self.key = key
 -    self.value = value
 -
 -  def read(self, iprot):
 -    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
 -      fastbinary.decode_binary(self, iprot.trans, (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.key = Key()
 -          self.key.read(iprot)
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 2:
 -        if ftype == TType.STRING:
 -          self.value = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      else:
 -        iprot.skip(ftype)
 -      iprot.readFieldEnd()
 -    iprot.readStructEnd()
 -
 -  def write(self, oprot):
 -    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
 -      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
 -      return
 -    oprot.writeStructBegin('KeyValue')
 -    if self.key is not None:
 -      oprot.writeFieldBegin('key', TType.STRUCT, 1)
 -      self.key.write(oprot)
 -      oprot.writeFieldEnd()
 -    if self.value is not None:
 -      oprot.writeFieldBegin('value', TType.STRING, 2)
 -      oprot.writeString(self.value)
 -      oprot.writeFieldEnd()
 -    oprot.writeFieldStop()
 -    oprot.writeStructEnd()
 -
 -  def validate(self):
 -    return
 -
 -
 -  def __hash__(self):
 -    value = 17
 -    value = (value * 31) ^ hash(self.key)
 -    value = (value * 31) ^ hash(self.value)
 -    return value
 -
 -  def __repr__(self):
 -    L = ['%s=%r' % (key, value)
 -      for key, value in self.__dict__.iteritems()]
 -    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)
 -
 -class ScanResult:
 -  """
 -  Attributes:
 -   - results
 -   - more
 -  """
 -
 -  thrift_spec = (
 -    None, # 0
 -    (1, TType.LIST, 'results', (TType.STRUCT,(KeyValue, KeyValue.thrift_spec)), None, ), # 1
 -    (2, TType.BOOL, 'more', None, None, ), # 2
 -  )
 -
 -  def __init__(self, results=None, more=None,):
 -    self.results = results
 -    self.more = more
 -
 -  def read(self, iprot):
 -    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
 -      fastbinary.decode_binary(self, iprot.trans, (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.LIST:
 -          self.results = []
 -          (_etype10, _size7) = iprot.readListBegin()
 -          for _i11 in xrange(_size7):
 -            _elem12 = KeyValue()
 -            _elem12.read(iprot)
 -            self.results.append(_elem12)
 -          iprot.readListEnd()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 2:
 -        if ftype == TType.BOOL:
 -          self.more = iprot.readBool()
 -        else:
 -          iprot.skip(ftype)
 -      else:
 -        iprot.skip(ftype)
 -      iprot.readFieldEnd()
 -    iprot.readStructEnd()
 -
 -  def write(self, oprot):
 -    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
 -      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
 -      return
 -    oprot.writeStructBegin('ScanResult')
 -    if self.results is not None:
 -      oprot.writeFieldBegin('results', TType.LIST, 1)
 -      oprot.writeListBegin(TType.STRUCT, len(self.results))
 -      for iter13 in self.results:
 -        iter13.write(oprot)
 -      oprot.writeListEnd()
 -      oprot.writeFieldEnd()
 -    if self.more is not None:
 -      oprot.writeFieldBegin('more', TType.BOOL, 2)
 -      oprot.writeBool(self.more)
 -      oprot.writeFieldEnd()
 -    oprot.writeFieldStop()
 -    oprot.writeStructEnd()
 -
 -  def validate(self):
 -    return
 -
 -
 -  def __hash__(self):
 -    value = 17
 -    value = (value * 31) ^ hash(self.results)
 -    value = (value * 31) ^ hash(self.more)
 -    return value
 -
 -  def __repr__(self):
 -    L = ['%s=%r' % (key, value)
 -      for key, value in self.__dict__.iteritems()]
 -    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)
 -
 -class Range:
 -  """
 -  Attributes:
 -   - start
 -   - startInclusive
 -   - stop
 -   - stopInclusive
 -  """
 -
 -  thrift_spec = (
 -    None, # 0
 -    (1, TType.STRUCT, 'start', (Key, Key.thrift_spec), None, ), # 1
 -    (2, TType.BOOL, 'startInclusive', None, None, ), # 2
 -    (3, TType.STRUCT, 'stop', (Key, Key.thrift_spec), None, ), # 3
 -    (4, TType.BOOL, 'stopInclusive', None, None, ), # 4
 -  )
 -
 -  def __init__(self, start=None, startInclusive=None, stop=None, stopInclusive=None,):
 -    self.start = start
 -    self.startInclusive = startInclusive
 -    self.stop = stop
 -    self.stopInclusive = stopInclusive
 -
 -  def read(self, iprot):
 -    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
 -      fastbinary.decode_binary(self, iprot.trans, (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.start = Key()
 -          self.start.read(iprot)
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 2:
 -        if ftype == TType.BOOL:
 -          self.startInclusive = iprot.readBool()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 3:
 -        if ftype == TType.STRUCT:
 -          self.stop = Key()
 -          self.stop.read(iprot)
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 4:
 -        if ftype == TType.BOOL:
 -          self.stopInclusive = iprot.readBool()
 -        else:
 -          iprot.skip(ftype)
 -      else:
 -        iprot.skip(ftype)
 -      iprot.readFieldEnd()
 -    iprot.readStructEnd()
 -
 -  def write(self, oprot):
 -    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
 -      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
 -      return
 -    oprot.writeStructBegin('Range')
 -    if self.start is not None:
 -      oprot.writeFieldBegin('start', TType.STRUCT, 1)
 -      self.start.write(oprot)
 -      oprot.writeFieldEnd()
 -    if self.startInclusive is not None:
 -      oprot.writeFieldBegin('startInclusive', TType.BOOL, 2)
 -      oprot.writeBool(self.startInclusive)
 -      oprot.writeFieldEnd()
 -    if self.stop is not None:
 -      oprot.writeFieldBegin('stop', TType.STRUCT, 3)
 -      self.stop.write(oprot)
 -      oprot.writeFieldEnd()
 -    if self.stopInclusive is not None:
 -      oprot.writeFieldBegin('stopInclusive', TType.BOOL, 4)
 -      oprot.writeBool(self.stopInclusive)
 -      oprot.writeFieldEnd()
 -    oprot.writeFieldStop()
 -    oprot.writeStructEnd()
 -
 -  def validate(self):
 -    return
 -
 -
 -  def __hash__(self):
 -    value = 17
 -    value = (value * 31) ^ hash(self.start)
 -    value = (value * 31) ^ hash(self.startInclusive)
 -    value = (value * 31) ^ hash(self.stop)
 -    value = (value * 31) ^ hash(self.stopInclusive)
 -    return value
 -
 -  def __repr__(self):
 -    L = ['%s=%r' % (key, value)
 -      for key, value in self.__dict__.iteritems()]
 -    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)
 -
 -class ScanColumn:
 -  """
 -  Attributes:
 -   - colFamily
 -   - colQualifier
 -  """
 -
 -  thrift_spec = (
 -    None, # 0
 -    (1, TType.STRING, 'colFamily', None, None, ), # 1
 -    (2, TType.STRING, 'colQualifier', None, None, ), # 2
 -  )
 -
 -  def __init__(self, colFamily=None, colQualifier=None,):
 -    self.colFamily = colFamily
 -    self.colQualifier = colQualifier
 -
 -  def read(self, iprot):
 -    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
 -      fastbinary.decode_binary(self, iprot.trans, (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.colFamily = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 2:
 -        if ftype == TType.STRING:
 -          self.colQualifier = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      else:
 -        iprot.skip(ftype)
 -      iprot.readFieldEnd()
 -    iprot.readStructEnd()
 -
 -  def write(self, oprot):
 -    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
 -      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
 -      return
 -    oprot.writeStructBegin('ScanColumn')
 -    if self.colFamily is not None:
 -      oprot.writeFieldBegin('colFamily', TType.STRING, 1)
 -      oprot.writeString(self.colFamily)
 -      oprot.writeFieldEnd()
 -    if self.colQualifier is not None:
 -      oprot.writeFieldBegin('colQualifier', TType.STRING, 2)
 -      oprot.writeString(self.colQualifier)
 -      oprot.writeFieldEnd()
 -    oprot.writeFieldStop()
 -    oprot.writeStructEnd()
 -
 -  def validate(self):
 -    return
 -
 -
 -  def __hash__(self):
 -    value = 17
 -    value = (value * 31) ^ hash(self.colFamily)
 -    value = (value * 31) ^ hash(self.colQualifier)
 -    return value
 -
 -  def __repr__(self):
 -    L = ['%s=%r' % (key, value)
 -      for key, value in self.__dict__.iteritems()]
 -    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)
 -
 -class IteratorSetting:
 -  """
 -  Attributes:
 -   - priority
 -   - name
 -   - iteratorClass
 -   - properties
 -  """
 -
 -  thrift_spec = (
 -    None, # 0
 -    (1, TType.I32, 'priority', None, None, ), # 1
 -    (2, TType.STRING, 'name', None, None, ), # 2
 -    (3, TType.STRING, 'iteratorClass', None, None, ), # 3
 -    (4, TType.MAP, 'properties', (TType.STRING,None,TType.STRING,None), None, ), # 4
 -  )
 -
 -  def __init__(self, priority=None, name=None, iteratorClass=None, properties=None,):
 -    self.priority = priority
 -    self.name = name
 -    self.iteratorClass = iteratorClass
 -    self.properties = properties
 -
 -  def read(self, iprot):
 -    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
 -      fastbinary.decode_binary(self, iprot.trans, (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.I32:
 -          self.priority = iprot.readI32()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 2:
 -        if ftype == TType.STRING:
 -          self.name = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 3:
 -        if ftype == TType.STRING:
 -          self.iteratorClass = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 4:
 -        if ftype == TType.MAP:
 -          self.properties = {}
 -          (_ktype15, _vtype16, _size14 ) = iprot.readMapBegin()
 -          for _i18 in xrange(_size14):
 -            _key19 = iprot.readString()
 -            _val20 = iprot.readString()
 -            self.properties[_key19] = _val20
 -          iprot.readMapEnd()
 -        else:
 -          iprot.skip(ftype)
 -      else:
 -        iprot.skip(ftype)
 -      iprot.readFieldEnd()
 -    iprot.readStructEnd()
 -
 -  def write(self, oprot):
 -    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
 -      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
 -      return
 -    oprot.writeStructBegin('IteratorSetting')
 -    if self.priority is not None:
 -      oprot.writeFieldBegin('priority', TType.I32, 1)
 -      oprot.writeI32(self.priority)
 -      oprot.writeFieldEnd()
 -    if self.name is not None:
 -      oprot.writeFieldBegin('name', TType.STRING, 2)
 -      oprot.writeString(self.name)
 -      oprot.writeFieldEnd()
 -    if self.iteratorClass is not None:
 -      oprot.writeFieldBegin('iteratorClass', TType.STRING, 3)
 -      oprot.writeString(self.iteratorClass)
 -      oprot.writeFieldEnd()
 -    if self.properties is not None:
 -      oprot.writeFieldBegin('properties', TType.MAP, 4)
 -      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.properties))
 -      for kiter21,viter22 in self.properties.items():
 -        oprot.writeString(kiter21)
 -        oprot.writeString(viter22)
 -      oprot.writeMapEnd()
 -      oprot.writeFieldEnd()
 -    oprot.writeFieldStop()
 -    oprot.writeStructEnd()
 -
 -  def validate(self):
 -    return
 -
 -
 -  def __hash__(self):
 -    value = 17
 -    value = (value * 31) ^ hash(self.priority)
 -    value = (value * 31) ^ hash(self.name)
 -    value = (value * 31) ^ hash(self.iteratorClass)
 -    value = (value * 31) ^ hash(self.properties)
 -    return value
 -
 -  def __repr__(self):
 -    L = ['%s=%r' % (key, value)
 -      for key, value in self.__dict__.iteritems()]
 -    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)
 -
 -class ScanOptions:
 -  """
 -  Attributes:
 -   - authorizations
 -   - range
 -   - columns
 -   - iterators
 -   - bufferSize
 -  """
 -
 -  thrift_spec = (
 -    None, # 0
 -    (1, TType.SET, 'authorizations', (TType.STRING,None), None, ), # 1
 -    (2, TType.STRUCT, 'range', (Range, Range.thrift_spec), None, ), # 2
 -    (3, TType.LIST, 'columns', (TType.STRUCT,(ScanColumn, ScanColumn.thrift_spec)), None, ), # 3
 -    (4, TType.LIST, 'iterators', (TType.STRUCT,(IteratorSetting, IteratorSetting.thrift_spec)), None, ), # 4
 -    (5, TType.I32, 'bufferSize', None, None, ), # 5
 -  )
 -
 -  def __init__(self, authorizations=None, range=None, columns=None, iterators=None, bufferSize=None,):
 -    self.authorizations = authorizations
 -    self.range = range
 -    self.columns = columns
 -    self.iterators = iterators
 -    self.bufferSize = bufferSize
 -
 -  def read(self, iprot):
 -    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
 -      fastbinary.decode_binary(self, iprot.trans, (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.SET:
 -          self.authorizations = set()
 -          (_etype26, _size23) = iprot.readSetBegin()
 -          for _i27 in xrange(_size23):
 -            _elem28 = iprot.readString()
 -            self.authorizations.add(_elem28)
 -          iprot.readSetEnd()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 2:
 -        if ftype == TType.STRUCT:
 -          self.range = Range()
 -          self.range.read(iprot)
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 3:
 -        if ftype == TType.LIST:
 -          self.columns = []
 -          (_etype32, _size29) = iprot.readListBegin()
 -          for _i33 in xrange(_size29):
 -            _elem34 = ScanColumn()
 -            _elem34.read(iprot)
 -            self.columns.append(_elem34)
 -          iprot.readListEnd()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 4:
 -        if ftype == TType.LIST:
 -          self.iterators = []
 -          (_etype38, _size35) = iprot.readListBegin()
 -          for _i39 in xrange(_size35):
 -            _elem40 = IteratorSetting()
 -            _elem40.read(iprot)
 -            self.iterators.append(_elem40)
 -          iprot.readListEnd()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 5:
 -        if ftype == TType.I32:
 -          self.bufferSize = iprot.readI32()
 -        else:
 -          iprot.skip(ftype)
 -      else:
 -        iprot.skip(ftype)
 -      iprot.readFieldEnd()
 -    iprot.readStructEnd()
 -
 -  def write(self, oprot):
 -    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
 -      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
 -      return
 -    oprot.writeStructBegin('ScanOptions')
 -    if self.authorizations is not None:
 -      oprot.writeFieldBegin('authorizations', TType.SET, 1)
 -      oprot.writeSetBegin(TType.STRING, len(self.authorizations))
 -      for iter41 in self.authorizations:
 -        oprot.writeString(iter41)
 -      oprot.writeSetEnd()
 -      oprot.writeFieldEnd()
 -    if self.range is not None:
 -      oprot.writeFieldBegin('range', TType.STRUCT, 2)
 -      self.range.write(oprot)
 -      oprot.writeFieldEnd()
 -    if self.columns is not None:
 -      oprot.writeFieldBegin('columns', TType.LIST, 3)
 -      oprot.writeListBegin(TType.STRUCT, len(self.columns))
 -      for iter42 in self.columns:
 -        iter42.write(oprot)
 -      oprot.writeListEnd()
 -      oprot.writeFieldEnd()
 -    if self.iterators is not None:
 -      oprot.writeFieldBegin('iterators', TType.LIST, 4)
 -      oprot.writeListBegin(TType.STRUCT, len(self.iterators))
 -      for iter43 in self.iterators:
 -        iter43.write(oprot)
 -      oprot.writeListEnd()
 -      oprot.writeFieldEnd()
 -    if self.bufferSize is not None:
 -      oprot.writeFieldBegin('bufferSize', TType.I32, 5)
 -      oprot.writeI32(self.bufferSize)
 -      oprot.writeFieldEnd()
 -    oprot.writeFieldStop()
 -    oprot.writeStructEnd()
 -
 -  def validate(self):
 -    return
 -
 -
 -  def __hash__(self):
 -    value = 17
 -    value = (value * 31) ^ hash(self.authorizations)
 -    value = (value * 31) ^ hash(self.range)
 -    value = (value * 31) ^ hash(self.columns)
 -    value = (value * 31) ^ hash(self.iterators)
 -    value = (value * 31) ^ hash(self.bufferSize)
 -    return value
 -
 -  def __repr__(self):
 -    L = ['%s=%r' % (key, value)
 -      for key, value in self.__dict__.iteritems()]
 -    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)
 -
 -class BatchScanOptions:
 -  """
 -  Attributes:
 -   - authorizations
 -   - ranges
 -   - columns
 -   - iterators
 -   - threads
 -  """
 -
 -  thrift_spec = (
 -    None, # 0
 -    (1, TType.SET, 'authorizations', (TType.STRING,None), None, ), # 1
 -    (2, TType.LIST, 'ranges', (TType.STRUCT,(Range, Range.thrift_spec)), None, ), # 2
 -    (3, TType.LIST, 'columns', (TType.STRUCT,(ScanColumn, ScanColumn.thrift_spec)), None, ), # 3
 -    (4, TType.LIST, 'iterators', (TType.STRUCT,(IteratorSetting, IteratorSetting.thrift_spec)), None, ), # 4
 -    (5, TType.I32, 'threads', None, None, ), # 5
 -  )
 -
 -  def __init__(self, authorizations=None, ranges=None, columns=None, iterators=None, threads=None,):
 -    self.authorizations = authorizations
 -    self.ranges = ranges
 -    self.columns = columns
 -    self.iterators = iterators
 -    self.threads = threads
 -
 -  def read(self, iprot):
 -    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
 -      fastbinary.decode_binary(self, iprot.trans, (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.SET:
 -          self.authorizations = set()
 -          (_etype47, _size44) = iprot.readSetBegin()
 -          for _i48 in xrange(_size44):
 -            _elem49 = iprot.readString()
 -            self.authorizations.add(_elem49)
 -          iprot.readSetEnd()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 2:
 -        if ftype == TType.LIST:
 -          self.ranges = []
 -          (_etype53, _size50) = iprot.readListBegin()
 -          for _i54 in xrange(_size50):
 -            _elem55 = Range()
 -            _elem55.read(iprot)
 -            self.ranges.append(_elem55)
 -          iprot.readListEnd()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 3:
 -        if ftype == TType.LIST:
 -          self.columns = []
 -          (_etype59, _size56) = iprot.readListBegin()
 -          for _i60 in xrange(_size56):
 -            _elem61 = ScanColumn()
 -            _elem61.read(iprot)
 -            self.columns.append(_elem61)
 -          iprot.readListEnd()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 4:
 -        if ftype == TType.LIST:
 -          self.iterators = []
 -          (_etype65, _size62) = iprot.readListBegin()
 -          for _i66 in xrange(_size62):
 -            _elem67 = IteratorSetting()
 -            _elem67.read(iprot)
 -            self.iterators.append(_elem67)
 -          iprot.readListEnd()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 5:
 -        if ftype == TType.I32:
 -          self.threads = iprot.readI32()
 -        else:
 -          iprot.skip(ftype)
 -      else:
 -        iprot.skip(ftype)
 -      iprot.readFieldEnd()
 -    iprot.readStructEnd()
 -
 -  def write(self, oprot):
 -    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
 -      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
 -      return
 -    oprot.writeStructBegin('BatchScanOptions')
 -    if self.authorizations is not None:
 -      oprot.writeFieldBegin('authorizations', TType.SET, 1)
 -      oprot.writeSetBegin(TType.STRING, len(self.authorizations))
 -      for iter68 in self.authorizations:
 -        oprot.writeString(iter68)
 -      oprot.writeSetEnd()
 -      oprot.writeFieldEnd()
 -    if self.ranges is not None:
 -      oprot.writeFieldBegin('ranges', TType.LIST, 2)
 -      oprot.writeListBegin(TType.STRUCT, len(self.ranges))
 -      for iter69 in self.ranges:
 -        iter69.write(oprot)
 -      oprot.writeListEnd()
 -      oprot.writeFieldEnd()
 -    if self.columns is not None:
 -      oprot.writeFieldBegin('columns', TType.LIST, 3)
 -      oprot.writeListBegin(TType.STRUCT, len(self.columns))
 -      for iter70 in self.columns:
 -        iter70.write(oprot)
 -      oprot.writeListEnd()
 -      oprot.writeFieldEnd()
 -    if self.iterators is not None:
 -      oprot.writeFieldBegin('iterators', TType.LIST, 4)
 -      oprot.writeListBegin(TType.STRUCT, len(self.iterators))
 -      for iter71 in self.iterators:
 -        iter71.write(oprot)
 -      oprot.writeListEnd()
 -      oprot.writeFieldEnd()
 -    if self.threads is not None:
 -      oprot.writeFieldBegin('threads', TType.I32, 5)
 -      oprot.writeI32(self.threads)
 -      oprot.writeFieldEnd()
 -    oprot.writeFieldStop()
 -    oprot.writeStructEnd()
 -
 -  def validate(self):
 -    return
 -
 -
 -  def __hash__(self):
 -    value = 17
 -    value = (value * 31) ^ hash(self.authorizations)
 -    value = (value * 31) ^ hash(self.ranges)
 -    value = (value * 31) ^ hash(self.columns)
 -    value = (value * 31) ^ hash(self.iterators)
 -    value = (value * 31) ^ hash(self.threads)
 -    return value
 -
 -  def __repr__(self):
 -    L = ['%s=%r' % (key, value)
 -      for key, value in self.__dict__.iteritems()]
 -    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)
 -
 -class KeyValueAndPeek:
 -  """
 -  Attributes:
 -   - keyValue
 -   - hasNext
 -  """
 -
 -  thrift_spec = (
 -    None, # 0
 -    (1, TType.STRUCT, 'keyValue', (KeyValue, KeyValue.thrift_spec), None, ), # 1
 -    (2, TType.BOOL, 'hasNext', None, None, ), # 2
 -  )
 -
 -  def __init__(self, keyValue=None, hasNext=None,):
 -    self.keyValue = keyValue
 -    self.hasNext = hasNext
 -
 -  def read(self, iprot):
 -    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
 -      fastbinary.decode_binary(self, iprot.trans, (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.keyValue = KeyValue()
 -          self.keyValue.read(iprot)
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 2:
 -        if ftype == TType.BOOL:
 -          self.hasNext = iprot.readBool()
 -        else:
 -          iprot.skip(ftype)
 -      else:
 -        iprot.skip(ftype)
 -      iprot.readFieldEnd()
 -    iprot.readStructEnd()
 -
 -  def write(self, oprot):
 -    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
 -      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
 -      return
 -    oprot.writeStructBegin('KeyValueAndPeek')
 -    if self.keyValue is not None:
 -      oprot.writeFieldBegin('keyValue', TType.STRUCT, 1)
 -      self.keyValue.write(oprot)
 -      oprot.writeFieldEnd()
 -    if self.hasNext is not None:
 -      oprot.writeFieldBegin('hasNext', TType.BOOL, 2)
 -      oprot.writeBool(self.hasNext)
 -      oprot.writeFieldEnd()
 -    oprot.writeFieldStop()
 -    oprot.writeStructEnd()
 -
 -  def validate(self):
 -    return
 -
 -
 -  def __hash__(self):
 -    value = 17
 -    value = (value * 31) ^ hash(self.keyValue)
 -    value = (value * 31) ^ hash(self.hasNext)
 -    return value
 -
 -  def __repr__(self):
 -    L = ['%s=%r' % (key, value)
 -      for key, value in self.__dict__.iteritems()]
 -    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)
 -
 -class KeyExtent:
 -  """
 -  Attributes:
 -   - tableId
 -   - endRow
 -   - prevEndRow
 -  """
 -
 -  thrift_spec = (
 -    None, # 0
 -    (1, TType.STRING, 'tableId', None, None, ), # 1
 -    (2, TType.STRING, 'endRow', None, None, ), # 2
 -    (3, TType.STRING, 'prevEndRow', None, None, ), # 3
 -  )
 -
 -  def __init__(self, tableId=None, endRow=None, prevEndRow=None,):
 -    self.tableId = tableId
 -    self.endRow = endRow
 -    self.prevEndRow = prevEndRow
 -
 -  def read(self, iprot):
 -    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
 -      fastbinary.decode_binary(self, iprot.trans, (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.tableId = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 2:
 -        if ftype == TType.STRING:
 -          self.endRow = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 3:
 -        if ftype == TType.STRING:
 -          self.prevEndRow = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      else:
 -        iprot.skip(ftype)
 -      iprot.readFieldEnd()
 -    iprot.readStructEnd()
 -
 -  def write(self, oprot):
 -    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
 -      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
 -      return
 -    oprot.writeStructBegin('KeyExtent')
 -    if self.tableId is not None:
 -      oprot.writeFieldBegin('tableId', TType.STRING, 1)
 -      oprot.writeString(self.tableId)
 -      oprot.writeFieldEnd()
 -    if self.endRow is not None:
 -      oprot.writeFieldBegin('endRow', TType.STRING, 2)
 -      oprot.writeString(self.endRow)
 -      oprot.writeFieldEnd()
 -    if self.prevEndRow is not None:
 -      oprot.writeFieldBegin('prevEndRow', TType.STRING, 3)
 -      oprot.writeString(self.prevEndRow)
 -      oprot.writeFieldEnd()
 -    oprot.writeFieldStop()
 -    oprot.writeStructEnd()
 -
 -  def validate(self):
 -    return
 -
 -
 -  def __hash__(self):
 -    value = 17
 -    value = (value * 31) ^ hash(self.tableId)
 -    value = (value * 31) ^ hash(self.endRow)
 -    value = (value * 31) ^ hash(self.prevEndRow)
 -    return value
 -
 -  def __repr__(self):
 -    L = ['%s=%r' % (key, value)
 -      for key, value in self.__dict__.iteritems()]
 -    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)
 -
 -class Column:
 -  """
 -  Attributes:
 -   - colFamily
 -   - colQualifier
 -   - colVisibility
 -  """
 -
 -  thrift_spec = (
 -    None, # 0
 -    (1, TType.STRING, 'colFamily', None, None, ), # 1
 -    (2, TType.STRING, 'colQualifier', None, None, ), # 2
 -    (3, TType.STRING, 'colVisibility', None, None, ), # 3
 -  )
 -
 -  def __init__(self, colFamily=None, colQualifier=None, colVisibility=None,):
 -    self.colFamily = colFamily
 -    self.colQualifier = colQualifier
 -    self.colVisibility = colVisibility
 -
 -  def read(self, iprot):
 -    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
 -      fastbinary.decode_binary(self, iprot.trans, (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.colFamily = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 2:
 -        if ftype == TType.STRING:
 -          self.colQualifier = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 3:
 -        if ftype == TType.STRING:
 -          self.colVisibility = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      else:
 -        iprot.skip(ftype)
 -      iprot.readFieldEnd()
 -    iprot.readStructEnd()
 -
 -  def write(self, oprot):
 -    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
 -      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
 -      return
 -    oprot.writeStructBegin('Column')
 -    if self.colFamily is not None:
 -      oprot.writeFieldBegin('colFamily', TType.STRING, 1)
 -      oprot.writeString(self.colFamily)
 -      oprot.writeFieldEnd()
 -    if self.colQualifier is not None:
 -      oprot.writeFieldBegin('colQualifier', TType.STRING, 2)
 -      oprot.writeString(self.colQualifier)
 -      oprot.writeFieldEnd()
 -    if self.colVisibility is not None:
 -      oprot.writeFieldBegin('colVisibility', TType.STRING, 3)
 -      oprot.writeString(self.colVisibility)
 -      oprot.writeFieldEnd()
 -    oprot.writeFieldStop()
 -    oprot.writeStructEnd()
 -
 -  def validate(self):
 -    return
 -
 -
 -  def __hash__(self):
 -    value = 17
 -    value = (value * 31) ^ hash(self.colFamily)
 -    value = (value * 31) ^ hash(self.colQualifier)
 -    value = (value * 31) ^ hash(self.colVisibility)
 -    return value
 -
 -  def __repr__(self):
 -    L = ['%s=%r' % (key, value)
 -      for key, value in self.__dict__.iteritems()]
 -    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)
 -
 -class Condition:
 -  """
 -  Attributes:
 -   - column
 -   - timestamp
 -   - value
 -   - iterators
 -  """
 -
 -  thrift_spec = (
 -    None, # 0
 -    (1, TType.STRUCT, 'column', (Column, Column.thrift_spec), None, ), # 1
 -    (2, TType.I64, 'timestamp', None, None, ), # 2
 -    (3, TType.STRING, 'value', None, None, ), # 3
 -    (4, TType.LIST, 'iterators', (TType.STRUCT,(IteratorSetting, IteratorSetting.thrift_spec)), None, ), # 4
 -  )
 -
 -  def __init__(self, column=None, timestamp=None, value=None, iterators=None,):
 -    self.column = column
 -    self.timestamp = timestamp
 -    self.value = value
 -    self.iterators = iterators
 -
 -  def read(self, iprot):
 -    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
 -      fastbinary.decode_binary(self, iprot.trans, (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.column = Column()
 -          self.column.read(iprot)
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 2:
 -        if ftype == TType.I64:
 -          self.timestamp = iprot.readI64()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 3:
 -        if ftype == TType.STRING:
 -          self.value = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 4:
 -        if ftype == TType.LIST:
 -          self.iterators = []
 -          (_etype75, _size72) = iprot.readListBegin()
 -          for _i76 in xrange(_size72):
 -            _elem77 = IteratorSetting()
 -            _elem77.read(iprot)
 -            self.iterators.append(_elem77)
 -          iprot.readListEnd()
 -        else:
 -          iprot.skip(ftype)
 -      else:
 -        iprot.skip(ftype)
 -      iprot.readFieldEnd()
 -    iprot.readStructEnd()
 -
 -  def write(self, oprot):
 -    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
 -      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
 -      return
 -    oprot.writeStructBegin('Condition')
 -    if self.column is not None:
 -      oprot.writeFieldBegin('column', TType.STRUCT, 1)
 -      self.column.write(oprot)
 -      oprot.writeFieldEnd()
 -    if self.timestamp is not None:
 -      oprot.writeFieldBegin('timestamp', TType.I64, 2)
 -      oprot.writeI64(self.timestamp)
 -      oprot.writeFieldEnd()
 -    if self.value is not None:
 -      oprot.writeFieldBegin('value', TType.STRING, 3)
 -      oprot.writeString(self.value)
 -      oprot.writeFieldEnd()
 -    if self.iterators is not None:
 -      oprot.writeFieldBegin('iterators', TType.LIST, 4)
 -      oprot.writeListBegin(TType.STRUCT, len(self.iterators))
 -      for iter78 in self.iterators:
 -        iter78.write(oprot)
 -      oprot.writeListEnd()
 -      oprot.writeFieldEnd()
 -    oprot.writeFieldStop()
 -    oprot.writeStructEnd()
 -
 -  def validate(self):
 -    return
 -
 -
 -  def __hash__(self):
 -    value = 17
 -    value = (value * 31) ^ hash(self.column)
 -    value = (value * 31) ^ hash(self.timestamp)
 -    value = (value * 31) ^ hash(self.value)
 -    value = (value * 31) ^ hash(self.iterators)
 -    return value
 -
 -  def __repr__(self):
 -    L = ['%s=%r' % (key, value)
 -      for key, value in self.__dict__.iteritems()]
 -    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)
 -
 -class ConditionalUpdates:
 -  """
 -  Attributes:
 -   - conditions
 -   - updates
 -  """
 -
 -  thrift_spec = (
 -    None, # 0
 -    None, # 1
 -    (2, TType.LIST, 'conditions', (TType.STRUCT,(Condition, Condition.thrift_spec)), None, ), # 2
 -    (3, TType.LIST, 'updates', (TType.STRUCT,(ColumnUpdate, ColumnUpdate.thrift_spec)), None, ), # 3
 -  )
 -
 -  def __init__(self, conditions=None, updates=None,):
 -    self.conditions = conditions
 -    self.updates = updates
 -
 -  def read(self, iprot):
 -    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
 -      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
 -      return
 -    iprot.readStructBegin()
 -    while True:
 -      (fname, ftype, fid) = iprot.readFieldBegin()
 -      if ftype == TType.STOP:
 -        break
 -      if fid == 2:
 -        if ftype == TType.LIST:
 -          self.conditions = []
 -          (_etype82, _size79) = iprot.readListBegin()
 -          for _i83 in xrange(_size79):
 -            _elem84 = Condition()
 -            _elem84.read(iprot)
 -            self.conditions.append(_elem84)
 -          iprot.readListEnd()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 3:
 -        if ftype == TType.LIST:
 -          self.updates = []
 -          (_etype88, _size85) = iprot.readListBegin()
 -          for _i89 in xrange(_size85):
 -            _elem90 = ColumnUpdate()
 -            _elem90.read(iprot)
 -            self.updates.append(_elem90)
 -          iprot.readListEnd()
 -        else:
 -          iprot.skip(ftype)
 -      else:
 -        iprot.skip(ftype)
 -      iprot.readFieldEnd()
 -    iprot.readStructEnd()
 -
 -  def write(self, oprot):
 -    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
 -      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
 -      return
 -    oprot.writeStructBegin('ConditionalUpdates')
 -    if self.conditions is not None:
 -      oprot.writeFieldBegin('conditions', TType.LIST, 2)
 -      oprot.writeListBegin(TType.STRUCT, len(self.conditions))
 -      for iter91 in self.conditions:
 -        iter91.write(oprot)
 -      oprot.writeListEnd()
 -      oprot.writeFieldEnd()
 -    if self.updates is not None:
 -      oprot.writeFieldBegin('updates', TType.LIST, 3)
 -      oprot.writeListBegin(TType.STRUCT, len(self.updates))
 -      for iter92 in self.updates:
 -        iter92.write(oprot)
 -      oprot.writeListEnd()
 -      oprot.writeFieldEnd()
 -    oprot.writeFieldStop()
 -    oprot.writeStructEnd()
 -
 -  def validate(self):
 -    return
 -
 -
 -  def __hash__(self):
 -    value = 17
 -    value = (value * 31) ^ hash(self.conditions)
 -    value = (value * 31) ^ hash(self.updates)
 -    return value
 -
 -  def __repr__(self):
 -    L = ['%s=%r' % (key, value)
 -      for key, value in self.__dict__.iteritems()]
 -    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)
 -
 -class ConditionalWriterOptions:
 -  """
 -  Attributes:
 -   - maxMemory
 -   - timeoutMs
 -   - threads
 -   - authorizations
 -   - durability
 -  """
 -
 -  thrift_spec = (
 -    None, # 0
 -    (1, TType.I64, 'maxMemory', None, None, ), # 1
 -    (2, TType.I64, 'timeoutMs', None, None, ), # 2
 -    (3, TType.I32, 'threads', None, None, ), # 3
 -    (4, TType.SET, 'authorizations', (TType.STRING,None), None, ), # 4
 -    (5, TType.I32, 'durability', None, None, ), # 5
 -  )
 -
 -  def __init__(self, maxMemory=None, timeoutMs=None, threads=None, authorizations=None, durability=None,):
 -    self.maxMemory = maxMemory
 -    self.timeoutMs = timeoutMs
 -    self.threads = threads
 -    self.authorizations = authorizations
 -    self.durability = durability
 -
 -  def read(self, iprot):
 -    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
 -      fastbinary.decode_binary(self, iprot.trans, (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.I64:
 -          self.maxMemory = iprot.readI64()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 2:
 -        if ftype == TType.I64:
 -          self.timeoutMs = iprot.readI64()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 3:
 -        if ftype == TType.I32:
 -          self.threads = iprot.readI32()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 4:
 -        if ftype == TType.SET:
 -          self.authorizations = set()
 -          (_etype96, _size93) = iprot.readSetBegin()
 -          for _i97 in xrange(_size93):
 -            _elem98 = iprot.readString()
 -            self.authorizations.add(_elem98)
 -          iprot.readSetEnd()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 5:
 -        if ftype == TType.I32:
 -          self.durability = iprot.readI32()
 -        else:
 -          iprot.skip(ftype)
 -      else:
 -        iprot.skip(ftype)
 -      iprot.readFieldEnd()
 -    iprot.readStructEnd()
 -
 -  def write(self, oprot):
 -    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
 -      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
 -      return
 -    oprot.writeStructBegin('ConditionalWriterOptions')
 -    if self.maxMemory is not None:
 -      oprot.writeFieldBegin('maxMemory', TType.I64, 1)
 -      oprot.writeI64(self.maxMemory)
 -      oprot.writeFieldEnd()
 -    if self.timeoutMs is not None:
 -      oprot.writeFieldBegin('timeoutMs', TType.I64, 2)
 -      oprot.writeI64(self.timeoutMs)
 -      oprot.writeFieldEnd()
 -    if self.threads is not None:
 -      oprot.writeFieldBegin('threads', TType.I32, 3)
 -      oprot.writeI32(self.threads)
 -      oprot.writeFieldEnd()
 -    if self.authorizations is not None:
 -      oprot.writeFieldBegin('authorizations', TType.SET, 4)
 -      oprot.writeSetBegin(TType.STRING, len(self.authorizations))
 -      for iter99 in self.authorizations:
 -        oprot.writeString(iter99)
 -      oprot.writeSetEnd()
 -      oprot.writeFieldEnd()
 -    if self.durability is not None:
 -      oprot.writeFieldBegin('durability', TType.I32, 5)
 -      oprot.writeI32(self.durability)
 -      oprot.writeFieldEnd()
 -    oprot.writeFieldStop()
 -    oprot.writeStructEnd()
 -
 -  def validate(self):
 -    return
 -
 -
 -  def __hash__(self):
 -    value = 17
 -    value = (value * 31) ^ hash(self.maxMemory)
 -    value = (value * 31) ^ hash(self.timeoutMs)
 -    value = (value * 31) ^ hash(self.threads)
 -    value = (value * 31) ^ hash(self.authorizations)
 -    value = (value * 31) ^ hash(self.durability)
 -    return value
 -
 -  def __repr__(self):
 -    L = ['%s=%r' % (key, value)
 -      for key, value in self.__dict__.iteritems()]
 -    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)
 -
 -class ActiveScan:
 -  """
 -  Attributes:
 -   - client
 -   - user
 -   - table
 -   - age
 -   - idleTime
 -   - type
 -   - state
 -   - extent
 -   - columns
 -   - iterators
 -   - authorizations
 -  """
 -
 -  thrift_spec = (
 -    None, # 0
 -    (1, TType.STRING, 'client', None, None, ), # 1
 -    (2, TType.STRING, 'user', None, None, ), # 2
 -    (3, TType.STRING, 'table', None, None, ), # 3
 -    (4, TType.I64, 'age', None, None, ), # 4
 -    (5, TType.I64, 'idleTime', None, None, ), # 5
 -    (6, TType.I32, 'type', None, None, ), # 6
 -    (7, TType.I32, 'state', None, None, ), # 7
 -    (8, TType.STRUCT, 'extent', (KeyExtent, KeyExtent.thrift_spec), None, ), # 8
 -    (9, TType.LIST, 'columns', (TType.STRUCT,(Column, Column.thrift_spec)), None, ), # 9
 -    (10, TType.LIST, 'iterators', (TType.STRUCT,(IteratorSetting, IteratorSetting.thrift_spec)), None, ), # 10
 -    (11, TType.LIST, 'authorizations', (TType.STRING,None), None, ), # 11
 -  )
 -
 -  def __init__(self, client=None, user=None, table=None, age=None, idleTime=None, type=None, state=None, extent=None, columns=None, iterators=None, authorizations=None,):
 -    self.client = client
 -    self.user = user
 -    self.table = table
 -    self.age = age
 -    self.idleTime = idleTime
 -    self.type = type
 -    self.state = state
 -    self.extent = extent
 -    self.columns = columns
 -    self.iterators = iterators
 -    self.authorizations = authorizations
 -
 -  def read(self, iprot):
 -    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
 -      fastbinary.decode_binary(self, iprot.trans, (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.client = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 2:
 -        if ftype == TType.STRING:
 -          self.user = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 3:
 -        if ftype == TType.STRING:
 -          self.table = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 4:
 -        if ftype == TType.I64:
 -          self.age = iprot.readI64()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 5:
 -        if ftype == TType.I64:
 -          self.idleTime = iprot.readI64()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 6:
 -        if ftype == TType.I32:
 -          self.type = iprot.readI32()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 7:
 -        if ftype == TType.I32:
 -          self.state = iprot.readI32()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 8:
 -        if ftype == TType.STRUCT:
 -          self.extent = KeyExtent()
 -          self.extent.read(iprot)
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 9:
 -        if ftype == TType.LIST:
 -          self.columns = []
 -          (_etype103, _size100) = iprot.readListBegin()
 -          for _i104 in xrange(_size100):
 -            _elem105 = Column()
 -            _elem105.read(iprot)
 -            self.columns.append(_elem105)
 -          iprot.readListEnd()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 10:
 -        if ftype == TType.LIST:
 -          self.iterators = []
 -          (_etype109, _size106) = iprot.readListBegin()
 -          for _i110 in xrange(_size106):
 -            _elem111 = IteratorSetting()
 -            _elem111.read(iprot)
 -            self.iterators.append(_elem111)
 -          iprot.readListEnd()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 11:
 -        if ftype == TType.LIST:
 -          self.authorizations = []
 -          (_etype115, _size112) = iprot.readListBegin()
 -          for _i116 in xrange(_size112):
 -            _elem117 = iprot.readString()
 -            self.authorizations.append(_elem117)
 -          iprot.readListEnd()
 -        else:
 -          iprot.skip(ftype)
 -      else:
 -        iprot.skip(ftype)
 -      iprot.readFieldEnd()
 -    iprot.readStructEnd()
 -
 -  def write(self, oprot):
 -    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
 -      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
 -      return
 -    oprot.writeStructBegin('ActiveScan')
 -    if self.client is not None:
 -      oprot.writeFieldBegin('client', TType.STRING, 1)
 -      oprot.writeString(self.client)
 -      oprot.writeFieldEnd()
 -    if self.user is not None:
 -      oprot.writeFieldBegin('user', TType.STRING, 2)
 -      oprot.writeString(self.user)
 -      oprot.writeFieldEnd()
 -    if self.table is not None:
 -      oprot.writeFieldBegin('table', TType.STRING, 3)
 -      oprot.writeString(self.table)
 -      oprot.writeFieldEnd()
 -    if self.age is not None:
 -      oprot.writeFieldBegin('age', TType.I64, 4)
 -      oprot.writeI64(self.age)
 -      oprot.writeFieldEnd()
 -    if self.idleTime is not None:
 -      oprot.writeFieldBegin('idleTime', TType.I64, 5)
 -      oprot.writeI64(self.idleTime)
 -      oprot.writeFieldEnd()
 -    if self.type is not None:
 -      oprot.writeFieldBegin('type', TType.I32, 6)
 -      oprot.writeI32(self.type)
 -      oprot.writeFieldEnd()
 -    if self.state is not None:
 -      oprot.writeFieldBegin('state', TType.I32, 7)
 -      oprot.writeI32(self.state)
 -      oprot.writeFieldEnd()
 -    if self.extent is not None:
 -      oprot.writeFieldBegin('extent', TType.STRUCT, 8)
 -      self.extent.write(oprot)
 -      oprot.writeFieldEnd()
 -    if self.columns is not None:
 -      oprot.writeFieldBegin('columns', TType.LIST, 9)
 -      oprot.writeListBegin(TType.STRUCT, len(self.columns))
 -      for iter118 in self.columns:
 -        iter118.write(oprot)
 -      oprot.writeListEnd()
 -      oprot.writeFieldEnd()
 -    if self.iterators is not None:
 -      oprot.writeFieldBegin('iterators', TType.LIST, 10)
 -      oprot.writeListBegin(TType.STRUCT, len(self.iterators))
 -      for iter119 in self.iterators:
 -        iter119.write(oprot)
 -      oprot.writeListEnd()
 -      oprot.writeFieldEnd()
 -    if self.authorizations is not None:
 -      oprot.writeFieldBegin('authorizations', TType.LIST, 11)
 -      oprot.writeListBegin(TType.STRING, len(self.authorizations))
 -      for iter120 in self.authorizations:
 -        oprot.writeString(iter120)
 -      oprot.writeListEnd()
 -      oprot.writeFieldEnd()
 -    oprot.writeFieldStop()
 -    oprot.writeStructEnd()
 -
 -  def validate(self):
 -    return
 -
 -
 -  def __hash__(self):
 -    value = 17
 -    value = (value * 31) ^ hash(self.client)
 -    value = (value * 31) ^ hash(self.user)
 -    value = (value * 31) ^ hash(self.table)
 -    value = (value * 31) ^ hash(self.age)
 -    value = (value * 31) ^ hash(self.idleTime)
 -    value = (value * 31) ^ hash(self.type)
 -    value = (value * 31) ^ hash(self.state)
 -    value = (value * 31) ^ hash(self.extent)
 -    value = (value * 31) ^ hash(self.columns)
 -    value = (value * 31) ^ hash(self.iterators)
 -    value = (value * 31) ^ hash(self.authorizations)
 -    return value
 -
 -  def __repr__(self):
 -    L = ['%s=%r' % (key, value)
 -      for key, value in self.__dict__.iteritems()]
 -    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)
 -
 -class ActiveCompaction:
 -  """
 -  Attributes:
 -   - extent
 -   - age
 -   - inputFiles
 -   - outputFile
 -   - type
 -   - reason
 -   - localityGroup
 -   - entriesRead
 -   - entriesWritten
 -   - iterators
 -  """
 -
 -  thrift_spec = (
 -    None, # 0
 -    (1, TType.STRUCT, 'extent', (KeyExtent, KeyExtent.thrift_spec), None, ), # 1
 -    (2, TType.I64, 'age', None, None, ), # 2
 -    (3, TType.LIST, 'inputFiles', (TType.STRING,None), None, ), # 3
 -    (4, TType.STRING, 'outputFile', None, None, ), # 4
 -    (5, TType.I32, 'type', None, None, ), # 5
 -    (6, TType.I32, 'reason', None, None, ), # 6
 -    (7, TType.STRING, 'localityGroup', None, None, ), # 7
 -    (8, TType.I64, 'entriesRead', None, None, ), # 8
 -    (9, TType.I64, 'entriesWritten', None, None, ), # 9
 -    (10, TType.LIST, 'iterators', (TType.STRUCT,(IteratorSetting, IteratorSetting.thrift_spec)), None, ), # 10
 -  )
 -
 -  def __init__(self, extent=None, age=None, inputFiles=None, outputFile=None, type=None, reason=None, localityGroup=None, entriesRead=None, entriesWritten=None, iterators=None,):
 -    self.extent = extent
 -    self.age = age
 -    self.inputFiles = inputFiles
 -    self.outputFile = outputFile
 -    self.type = type
 -    self.reason = reason
 -    self.localityGroup = localityGroup
 -    self.entriesRead = entriesRead
 -    self.entriesWritten = entriesWritten
 -    self.iterators = iterators
 -
 -  def read(self, iprot):
 -    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
 -      fastbinary.decode_binary(self, iprot.trans, (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.extent = KeyExtent()
 -          self.extent.read(iprot)
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 2:
 -        if ftype == TType.I64:
 -          self.age = iprot.readI64()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 3:
 -        if ftype == TType.LIST:
 -          self.inputFiles = []
 -          (_etype124, _size121) = iprot.readListBegin()
 -          for _i125 in xrange(_size121):
 -            _elem126 = iprot.readString()
 -            self.inputFiles.append(_elem126)
 -          iprot.readListEnd()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 4:
 -        if ftype == TType.STRING:
 -          self.outputFile = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 5:
 -        if ftype == TType.I32:
 -          self.type = iprot.readI32()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 6:
 -        if ftype == TType.I32:
 -          self.reason = iprot.readI32()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 7:
 -        if ftype == TType.STRING:
 -          self.localityGroup = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 8:
 -        if ftype == TType.I64:
 -          self.entriesRead = iprot.readI64()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 9:
 -        if ftype == TType.I64:
 -          self.entriesWritten = iprot.readI64()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 10:
 -        if ftype == TType.LIST:
 -          self.iterators = []
 -          (_etype130, _size127) = iprot.readListBegin()
 -          for _i131 in xrange(_size127):
 -            _elem132 = IteratorSetting()
 -            _elem132.read(iprot)
 -            self.iterators.append(_elem132)
 -          iprot.readListEnd()
 -        else:
 -          iprot.skip(ftype)
 -      else:
 -        iprot.skip(ftype)
 -      iprot.readFieldEnd()
 -    iprot.readStructEnd()
 -
 -  def write(self, oprot):
 -    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
 -      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
 -      return
 -    oprot.writeStructBegin('ActiveCompaction')
 -    if self.extent is not None:
 -      oprot.writeFieldBegin('extent', TType.STRUCT, 1)
 -      self.extent.write(oprot)
 -      oprot.writeFieldEnd()
 -    if self.age is not None:
 -      oprot.writeFieldBegin('age', TType.I64, 2)
 -      oprot.writeI64(self.age)
 -      oprot.writeFieldEnd()
 -    if self.inputFiles is not None:
 -      oprot.writeFieldBegin('inputFiles', TType.LIST, 3)
 -      oprot.writeListBegin(TType.STRING, len(self.inputFiles))
 -      for iter133 in self.inputFiles:
 -        oprot.writeString(iter133)
 -      oprot.writeListEnd()
 -      oprot.writeFieldEnd()
 -    if self.outputFile is not None:
 -      oprot.writeFieldBegin('outputFile', TType.STRING, 4)
 -      oprot.writeString(self.outputFile)
 -      oprot.writeFieldEnd()
 -    if self.type is not None:
 -      oprot.writeFieldBegin('type', TType.I32, 5)
 -      oprot.writeI32(self.type)
 -      oprot.writeFieldEnd()
 -    if self.reason is not None:
 -      oprot.writeFieldBegin('reason', TType.I32, 6)
 -      oprot.writeI32(self.reason)
 -      oprot.writeFieldEnd()
 -    if self.localityGroup is not None:
 -      oprot.writeFieldBegin('localityGroup', TType.STRING, 7)
 -      oprot.writeString(self.localityGroup)
 -      oprot.writeFieldEnd()
 -    if self.entriesRead is not None:
 -      oprot.writeFieldBegin('entriesRead', TType.I64, 8)
 -      oprot.writeI64(self.entriesRead)
 -      oprot.writeFieldEnd()
 -    if self.entriesWritten is not None:
 -      oprot.writeFieldBegin('entriesWritten', TType.I64, 9)
 -      oprot.writeI64(self.entriesWritten)
 -      oprot.writeFieldEnd()
 -    if self.iterators is not None:
 -      oprot.writeFieldBegin('iterators', TType.LIST, 10)
 -      oprot.writeListBegin(TType.STRUCT, len(self.iterators))
 -      for iter134 in self.iterators:
 -        iter134.write(oprot)
 -      oprot.writeListEnd()
 -      oprot.writeFieldEnd()
 -    oprot.writeFieldStop()
 -    oprot.writeStructEnd()
 -
 -  def validate(self):
 -    return
 -
 -
 -  def __hash__(self):
 -    value = 17
 -    value = (value * 31) ^ hash(self.extent)
 -    value = (value * 31) ^ hash(self.age)
 -    value = (value * 31) ^ hash(self.inputFiles)
 -    value = (value * 31) ^ hash(self.outputFile)
 -    value = (value * 31) ^ hash(self.type)
 -    value = (value * 31) ^ hash(self.reason)
 -    value = (value * 31) ^ hash(self.localityGroup)
 -    value = (value * 31) ^ hash(self.entriesRead)
 -    value = (value * 31) ^ hash(self.entriesWritten)
 -    value = (value * 31) ^ hash(self.iterators)
 -    return value
 -
 -  def __repr__(self):
 -    L = ['%s=%r' % (key, value)
 -      for key, value in self.__dict__.iteritems()]
 -    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)
 -
 -class WriterOptions:
 -  """
 -  Attributes:
 -   - maxMemory
 -   - latencyMs
 -   - timeoutMs
 -   - threads
 -   - durability
 -  """
 -
 -  thrift_spec = (
 -    None, # 0
 -    (1, TType.I64, 'maxMemory', None, None, ), # 1
 -    (2, TType.I64, 'latencyMs', None, None, ), # 2
 -    (3, TType.I64, 'timeoutMs', None, None, ), # 3
 -    (4, TType.I32, 'threads', None, None, ), # 4
 -    (5, TType.I32, 'durability', None, None, ), # 5
 -  )
 -
 -  def __init__(self, maxMemory=None, latencyMs=None, timeoutMs=None, threads=None, durability=None,):
 -    self.maxMemory = maxMemory
 -    self.latencyMs = latencyMs
 -    self.timeoutMs = timeoutMs
 -    self.threads = threads
 -    self.durability = durability
 -
 -  def read(self, iprot):
 -    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
 -      fastbinary.decode_binary(self, iprot.trans, (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.I64:
 -          self.maxMemory = iprot.readI64()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 2:
 -        if ftype == TType.I64:
 -          self.latencyMs = iprot.readI64()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 3:
 -        if ftype == TType.I64:
 -          self.timeoutMs = iprot.readI64()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 4:
 -        if ftype == TType.I32:
 -          self.threads = iprot.readI32()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 5:
 -        if ftype == TType.I32:
 -          self.durability = iprot.readI32()
 -        else:
 -          iprot.skip(ftype)
 -      else:
 -        iprot.skip(ftype)
 -      iprot.readFieldEnd()
 -    iprot.readStructEnd()
 -
 -  def write(self, oprot):
 -    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
 -      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
 -      return
 -    oprot.writeStructBegin('WriterOptions')
 -    if self.maxMemory is not None:
 -      oprot.writeFieldBegin('maxMemory', TType.I64, 1)
 -      oprot.writeI64(self.maxMemory)
 -      oprot.writeFieldEnd()
 -    if self.latencyMs is not None:
 -      oprot.writeFieldBegin('latencyMs', TType.I64, 2)
 -      oprot.writeI64(self.latencyMs)
 -      oprot.writeFieldEnd()
 -    if self.timeoutMs is not None:
 -      oprot.writeFieldBegin('timeoutMs', TType.I64, 3)
 -      oprot.writeI64(self.timeoutMs)
 -      oprot.writeFieldEnd()
 -    if self.threads is not None:
 -      oprot.writeFieldBegin('threads', TType.I32, 4)
 -      oprot.writeI32(self.threads)
 -      oprot.writeFieldEnd()
 -    if self.durability is not None:
 -      oprot.writeFieldBegin('durability', TType.I32, 5)
 -      oprot.writeI32(self.durability)
 -      oprot.writeFieldEnd()
 -    oprot.writeFieldStop()
 -    oprot.writeStructEnd()
 -
 -  def validate(self):
 -    return
 -
 -
 -  def __hash__(self):
 -    value = 17
 -    value = (value * 31) ^ hash(self.maxMemory)
 -    value = (value * 31) ^ hash(self.latencyMs)
 -    value = (value * 31) ^ hash(self.timeoutMs)
 -    value = (value * 31) ^ hash(self.threads)
 -    value = (value * 31) ^ hash(self.durability)
 -    return value
 -
 -  def __repr__(self):
 -    L = ['%s=%r' % (key, value)
 -      for key, value in self.__dict__.iteritems()]
 -    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)
 -
 -class CompactionStrategyConfig:
 -  """
 -  Attributes:
 -   - className
 -   - options
 -  """
 -
 -  thrift_spec = (
 -    None, # 0
 -    (1, TType.STRING, 'className', None, None, ), # 1
 -    (2, TType.MAP, 'options', (TType.STRING,None,TType.STRING,None), None, ), # 2
 -  )
 -
 -  def __init__(self, className=None, options=None,):
 -    self.className = className
 -    self.options = options
 -
 -  def read(self, iprot):
 -    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
 -      fastbinary.decode_binary(self, iprot.trans, (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.className = iprot.readString()
 -        else:
 -          iprot.skip(ftype)
 -      elif fid == 2:
 -        if ftype == TType.MAP:
 -          self.options = {}
 -          (_ktype136, _vtype137, _size135 ) = iprot.readMapBegin()
 -          for _i139 in xrange(_size135):
 -            _key140 = iprot.readString()
 -            _val141 = iprot.readString()
 -            self.options[_key140] = _val141
 -          iprot.readMapEnd()
 -        else:
 -          iprot.skip(ftype)
 -      else:
 -        iprot.skip(ftype)
 -      iprot.readFieldEnd()
 -    iprot.readStructEnd()
 -
 -  def write(self, oprot):
 -    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
 -      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
 -      return
 -    oprot.writeStructBegin('CompactionStrategyConfig')
 -    if self.className is not None:
 -      oprot.writeFieldBegin('className', TType.STRING, 1)
 -      oprot.writeString(self.className)
 -      oprot.writeFieldEnd()
 -    if self.options is not None:
 -      oprot.writeFieldBegin('options', TType.MAP, 2)
 -      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.options))
 -      for kiter142,viter143 in self.options.items():
 -        oprot.writeString(kiter142)
 -        oprot.writeString(viter143)
 -      oprot.writeMapEnd()
 -      oprot.writeFieldEnd()
 -    oprot.writeFieldStop()
 -    oprot.writeStructEnd()
 -
 -  def validate(self):
 -    return
 -
 -
 -  def __hash__(self):
 -    value = 17
 -    value = (value * 31) ^ hash(self.className)
 -    value = (value * 31) ^ hash(self.options)
 -    return value
 -
 -  def __repr__(self):
 -    L = ['%s=%r' % (key, value)
 -      for key, value in self.__dict__.iteritems()]
 -    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)
 +
 +
 +class PartialKey(object):
 +    ROW = 0
 +    ROW_COLFAM = 1
 +    ROW_COLFAM_COLQUAL = 2
 +    ROW_COLFAM_COLQUAL_COLVIS = 3
 +    ROW_COLFAM_COLQUAL_COLVIS_TIME = 4
 +    ROW_COLFAM_COLQUAL_COLVIS_TIME_DEL = 5
 +
 +    _VALUES_TO_NAMES = {
 +        0: "ROW",
 +        1: "ROW_COLFAM",
 +        2: "ROW_COLFAM_COLQUAL",
 +        3: "ROW_COLFAM_COLQUAL_COLVIS",
 +        4: "ROW_COLFAM_COLQUAL_COLVIS_TIME",
 +        5: "ROW_COLFAM_COLQUAL_COLVIS_TIME_DEL",
 +    }
 +
 +    _NAMES_TO_VALUES = {
 +        "ROW": 0,
 +        "ROW_COLFAM": 1,
 +        "ROW_COLFAM_COLQUAL": 2,
 +        "ROW_COLFAM_COLQUAL_COLVIS": 3,
 +        "ROW_COLFAM_COLQUAL_COLVIS_TIME": 4,
 +        "ROW_COLFAM_COLQUAL_COLVIS_TIME_DEL": 5,
 +    }
 +
 +
 +class TablePermission(object):
 +    READ = 2
 +    WRITE = 3
 +    BULK_IMPORT = 4
 +    ALTER_TABLE = 5
 +    GRANT = 6
 +    DROP_TABLE = 7
 +
 +    _VALUES_TO_NAMES = {
 +        2: "READ",
 +        3: "WRITE",
 +        4: "BULK_IMPORT",
 +        5: "ALTER_TABLE",
 +        6: "GRANT",
 +        7: "DROP_TABLE",
 +    }
 +
 +    _NAMES_TO_VALUES = {
 +        "READ": 2,
 +        "WRITE": 3,
 +        "BULK_IMPORT": 4,
 +        "ALTER_TABLE": 5,
 +        "GRANT": 6,
 +        "DROP_TABLE": 7,
 +    }
 +
 +
 +class SystemPermission(object):
 +    GRANT = 0
 +    CREATE_TABLE = 1
 +    DROP_TABLE = 2
 +    ALTER_TABLE = 3
 +    CREATE_USER = 4
 +    DROP_USER = 5
 +    ALTER_USER = 6
 +    SYSTEM = 7
++    CREATE_NAMESPACE = 8
++    DROP_NAMESPACE = 9
++    ALTER_NAMESPACE = 10
++    OBTAIN_DELEGATION_TOKEN = 11
 +
 +    _VALUES_TO_NAMES = {
 +        0: "GRANT",
 +        1: "CREATE_TABLE",
 +        2: "DROP_TABLE",
 +        3: "ALTER_TABLE",
 +        4: "CREATE_USER",
 +        5: "DROP_USER",
 +        6: "ALTER_USER",
 +        7: "SYSTEM",
++        8: "CREATE_NAMESPACE",
++        9: "DROP_NAMESPACE",
++        10: "ALTER_NAMESPACE",
++        11: "OBTAIN_DELEGATION_TOKEN",
 +    }
 +
 +    _NAMES_TO_VALUES = {
 +        "GRANT": 0,
 +        "CREATE_TABLE": 1,
 +        "DROP_TABLE": 2,
 +        "ALTER_TABLE": 3,
 +        "CREATE_USER": 4,
 +        "DROP_USER": 5,
 +        "ALTER_USER": 6,
 +        "SYSTEM": 7,
++        "CREATE_NAMESPACE": 8,
++        "DROP_NAMESPACE": 9,
++        "ALTER_NAMESPACE": 10,
++        "OBTAIN_DELEGATION_TOKEN": 11,
 +    }
 +
 +
 +class NamespacePermission(object):
 +    READ = 0
 +    WRITE = 1
 +    ALTER_NAMESPACE = 2
 +    GRANT = 3
 +    ALTER_TABLE = 4
 +    CREATE_TABLE = 5
 +    DROP_TABLE = 6
 +    BULK_IMPORT = 7
 +    DROP_NAMESPACE = 8
 +
 +    _VALUES_TO_NAMES = {
 +        0: "READ",
 +        1: "WRITE",
 +        2: "ALTER_NAMESPACE",
 +        3: "GRANT",
 +        4: "ALTER_TABLE",
 +        5: "CREATE_TABLE",
 +        6: "DROP_TABLE",
 +        7: "BULK_IMPORT",
 +        8: "DROP_NAMESPACE",
 +    }
 +
 +    _NAMES_TO_VALUES = {
 +        "READ": 0,
 +        "WRITE": 1,
 +        "ALTER_NAMESPACE": 2,
 +        "GRANT": 3,
 +        "ALTER_TABLE": 4,
 +        "CREATE_TABLE": 5,
 +        "DROP_TABLE": 6,
 +        "BULK_IMPORT": 7,
 +        "DROP_NAMESPACE": 8,
 +    }
 +
 +
 +class ScanType(object):
 +    SINGLE = 0
 +    BATCH = 1
 +
 +    _VALUES_TO_NAMES = {
 +        0: "SINGLE",
 +        1: "BATCH",
 +    }
 +
 +    _NAMES_TO_VALUES = {
 +        "SINGLE": 0,
 +        "BATCH": 1,
 +    }
 +
 +
 +class ScanState(object):
 +    IDLE = 0
 +    RUNNING = 1
 +    QUEUED = 2
 +
 +    _VALUES_TO_NAMES = {
 +        0: "IDLE",
 +        1: "RUNNING",
 +        2: "QUEUED",
 +    }
 +
 +    _NAMES_TO_VALUES = {
 +        "IDLE": 0,
 +        "RUNNING": 1,
 +        "QUEUED": 2,
 +    }
 +
 +
 +class ConditionalStatus(object):
 +    ACCEPTED = 0
 +    REJECTED = 1
 +    VIOLATED = 2
 +    UNKNOWN = 3
 +    INVISIBLE_VISIBILITY = 4
 +
 +    _VALUES_TO_NAMES = {
 +        0: "ACCEPTED",
 +        1: "REJECTED",
 +        2: "VIOLATED",
 +        3: "UNKNOWN",
 +        4: "INVISIBLE_VISIBILITY",
 +    }
 +
 +    _NAMES_TO_VALUES = {
 +        "ACCEPTED": 0,
 +        "REJECTED": 1,
 +        "VIOLATED": 2,
 +        "UNKNOWN": 3,
 +        "INVISIBLE_VISIBILITY": 4,
 +    }
 +
 +
 +class Durability(object):
 +    DEFAULT = 0
 +    NONE = 1
 +    LOG = 2
 +    FLUSH = 3
 +    SYNC = 4
 +
 +    _VALUES_TO_NAMES = {
 +   

<TRUNCATED>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/e2247ead/proxy/src/main/ruby/proxy_types.rb
----------------------------------------------------------------------


[08/10] accumulo git commit: Merge branch '1.7' into 1.8

Posted by ct...@apache.org.
Merge branch '1.7' into 1.8


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

Branch: refs/heads/master
Commit: e86fabb87730abce15ca8f66459cdd44372aeadf
Parents: a4ef3e0 a9bf10f
Author: Christopher Tubbs <ct...@apache.org>
Authored: Thu Feb 9 16:45:46 2017 -0500
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Thu Feb 9 16:45:46 2017 -0500

----------------------------------------------------------------------
 proxy/src/main/cpp/proxy_types.cpp                    | 14 +++++++++++---
 proxy/src/main/cpp/proxy_types.h                      |  6 +++++-
 .../accumulo/proxy/thrift/SystemPermission.java       | 14 +++++++++++++-
 proxy/src/main/python/ttypes.py                       | 12 ++++++++++++
 proxy/src/main/ruby/proxy_types.rb                    |  8 ++++++--
 proxy/src/main/thrift/proxy.thrift                    |  4 ++++
 6 files changed, 51 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/e86fabb8/proxy/src/main/cpp/proxy_types.cpp
----------------------------------------------------------------------
diff --cc proxy/src/main/cpp/proxy_types.cpp
index 09c2d9c,4a626f5..87ef7ac
--- a/proxy/src/main/cpp/proxy_types.cpp
+++ b/proxy/src/main/cpp/proxy_types.cpp
@@@ -83,34 -84,14 +87,38 @@@ const char* _kSystemPermissionNames[] 
    "CREATE_USER",
    "DROP_USER",
    "ALTER_USER",
-   "SYSTEM"
+   "SYSTEM",
+   "CREATE_NAMESPACE",
+   "DROP_NAMESPACE",
+   "ALTER_NAMESPACE",
+   "OBTAIN_DELEGATION_TOKEN"
  };
- const std::map<int, const char*> _SystemPermission_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(8, _kSystemPermissionValues, _kSystemPermissionNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+ const std::map<int, const char*> _SystemPermission_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(12, _kSystemPermissionValues, _kSystemPermissionNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
  
 +int _kNamespacePermissionValues[] = {
 +  NamespacePermission::READ,
 +  NamespacePermission::WRITE,
 +  NamespacePermission::ALTER_NAMESPACE,
 +  NamespacePermission::GRANT,
 +  NamespacePermission::ALTER_TABLE,
 +  NamespacePermission::CREATE_TABLE,
 +  NamespacePermission::DROP_TABLE,
 +  NamespacePermission::BULK_IMPORT,
 +  NamespacePermission::DROP_NAMESPACE
 +};
 +const char* _kNamespacePermissionNames[] = {
 +  "READ",
 +  "WRITE",
 +  "ALTER_NAMESPACE",
 +  "GRANT",
 +  "ALTER_TABLE",
 +  "CREATE_TABLE",
 +  "DROP_TABLE",
 +  "BULK_IMPORT",
 +  "DROP_NAMESPACE"
 +};
 +const std::map<int, const char*> _NamespacePermission_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(9, _kNamespacePermissionValues, _kNamespacePermissionNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
 +
  int _kScanTypeValues[] = {
    ScanType::SINGLE,
    ScanType::BATCH

http://git-wip-us.apache.org/repos/asf/accumulo/blob/e86fabb8/proxy/src/main/cpp/proxy_types.h
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/accumulo/blob/e86fabb8/proxy/src/main/java/org/apache/accumulo/proxy/thrift/SystemPermission.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/accumulo/blob/e86fabb8/proxy/src/main/python/ttypes.py
----------------------------------------------------------------------
diff --cc proxy/src/main/python/ttypes.py
index 87a977d,a748c0a..3f9ec9c
--- a/proxy/src/main/python/ttypes.py
+++ b/proxy/src/main/python/ttypes.py
@@@ -112,43 -120,12 +120,47 @@@ class SystemPermission
      "DROP_USER": 5,
      "ALTER_USER": 6,
      "SYSTEM": 7,
+     "CREATE_NAMESPACE": 8,
+     "DROP_NAMESPACE": 9,
+     "ALTER_NAMESPACE": 10,
+     "OBTAIN_DELEGATION_TOKEN": 11,
    }
  
 +class NamespacePermission:
 +  READ = 0
 +  WRITE = 1
 +  ALTER_NAMESPACE = 2
 +  GRANT = 3
 +  ALTER_TABLE = 4
 +  CREATE_TABLE = 5
 +  DROP_TABLE = 6
 +  BULK_IMPORT = 7
 +  DROP_NAMESPACE = 8
 +
 +  _VALUES_TO_NAMES = {
 +    0: "READ",
 +    1: "WRITE",
 +    2: "ALTER_NAMESPACE",
 +    3: "GRANT",
 +    4: "ALTER_TABLE",
 +    5: "CREATE_TABLE",
 +    6: "DROP_TABLE",
 +    7: "BULK_IMPORT",
 +    8: "DROP_NAMESPACE",
 +  }
 +
 +  _NAMES_TO_VALUES = {
 +    "READ": 0,
 +    "WRITE": 1,
 +    "ALTER_NAMESPACE": 2,
 +    "GRANT": 3,
 +    "ALTER_TABLE": 4,
 +    "CREATE_TABLE": 5,
 +    "DROP_TABLE": 6,
 +    "BULK_IMPORT": 7,
 +    "DROP_NAMESPACE": 8,
 +  }
 +
  class ScanType:
    SINGLE = 0
    BATCH = 1

http://git-wip-us.apache.org/repos/asf/accumulo/blob/e86fabb8/proxy/src/main/ruby/proxy_types.rb
----------------------------------------------------------------------
diff --cc proxy/src/main/ruby/proxy_types.rb
index e542df6,522c80c..ddf8a18
--- a/proxy/src/main/ruby/proxy_types.rb
+++ b/proxy/src/main/ruby/proxy_types.rb
@@@ -52,24 -52,14 +52,28 @@@ module Accumul
      DROP_USER = 5
      ALTER_USER = 6
      SYSTEM = 7
-     VALUE_MAP = {0 => "GRANT", 1 => "CREATE_TABLE", 2 => "DROP_TABLE", 3 => "ALTER_TABLE", 4 => "CREATE_USER", 5 => "DROP_USER", 6 => "ALTER_USER", 7 => "SYSTEM"}
-     VALID_VALUES = Set.new([GRANT, CREATE_TABLE, DROP_TABLE, ALTER_TABLE, CREATE_USER, DROP_USER, ALTER_USER, SYSTEM]).freeze
+     CREATE_NAMESPACE = 8
+     DROP_NAMESPACE = 9
+     ALTER_NAMESPACE = 10
+     OBTAIN_DELEGATION_TOKEN = 11
+     VALUE_MAP = {0 => "GRANT", 1 => "CREATE_TABLE", 2 => "DROP_TABLE", 3 => "ALTER_TABLE", 4 => "CREATE_USER", 5 => "DROP_USER", 6 => "ALTER_USER", 7 => "SYSTEM", 8 => "CREATE_NAMESPACE", 9 => "DROP_NAMESPACE", 10 => "ALTER_NAMESPACE", 11 => "OBTAIN_DELEGATION_TOKEN"}
+     VALID_VALUES = Set.new([GRANT, CREATE_TABLE, DROP_TABLE, ALTER_TABLE, CREATE_USER, DROP_USER, ALTER_USER, SYSTEM, CREATE_NAMESPACE, DROP_NAMESPACE, ALTER_NAMESPACE, OBTAIN_DELEGATION_TOKEN]).freeze
    end
  
 +  module NamespacePermission
 +    READ = 0
 +    WRITE = 1
 +    ALTER_NAMESPACE = 2
 +    GRANT = 3
 +    ALTER_TABLE = 4
 +    CREATE_TABLE = 5
 +    DROP_TABLE = 6
 +    BULK_IMPORT = 7
 +    DROP_NAMESPACE = 8
 +    VALUE_MAP = {0 => "READ", 1 => "WRITE", 2 => "ALTER_NAMESPACE", 3 => "GRANT", 4 => "ALTER_TABLE", 5 => "CREATE_TABLE", 6 => "DROP_TABLE", 7 => "BULK_IMPORT", 8 => "DROP_NAMESPACE"}
 +    VALID_VALUES = Set.new([READ, WRITE, ALTER_NAMESPACE, GRANT, ALTER_TABLE, CREATE_TABLE, DROP_TABLE, BULK_IMPORT, DROP_NAMESPACE]).freeze
 +  end
 +
    module ScanType
      SINGLE = 0
      BATCH = 1

http://git-wip-us.apache.org/repos/asf/accumulo/blob/e86fabb8/proxy/src/main/thrift/proxy.thrift
----------------------------------------------------------------------
diff --cc proxy/src/main/thrift/proxy.thrift
index 3814c44,00427c0..e15990c
--- a/proxy/src/main/thrift/proxy.thrift
+++ b/proxy/src/main/thrift/proxy.thrift
@@@ -131,20 -131,12 +131,24 @@@ enum SystemPermission 
    DROP_USER = 5,
    ALTER_USER = 6,
    SYSTEM = 7,
+   CREATE_NAMESPACE = 8,
+   DROP_NAMESPACE = 9,
+   ALTER_NAMESPACE = 10,
+   OBTAIN_DELEGATION_TOKEN = 11,
  }
  
 +enum NamespacePermission {
 +  READ = 0,
 +  WRITE = 1,
 +  ALTER_NAMESPACE = 2,
 +  GRANT = 3,
 +  ALTER_TABLE = 4,
 +  CREATE_TABLE = 5,
 +  DROP_TABLE = 6,
 +  BULK_IMPORT = 7,
 +  DROP_NAMESPACE = 8
 +}
 +
  enum ScanType {
      SINGLE,
      BATCH


[03/10] accumulo git commit: ACCUMULO-4519 patch from Yudong Wu

Posted by ct...@apache.org.
ACCUMULO-4519 patch from Yudong Wu

Adds missing system permission and namespace functionality to the proxy.


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

Branch: refs/heads/master
Commit: 025aacc9fde81d1d51394126fd550f07a71f260e
Parents: 13d3f5d
Author: Michael Wall <mj...@gmail.com>
Authored: Thu Feb 9 16:13:47 2017 -0500
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Thu Feb 9 16:24:18 2017 -0500

----------------------------------------------------------------------
 proxy/src/main/thrift/proxy.thrift | 4 ++++
 1 file changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/025aacc9/proxy/src/main/thrift/proxy.thrift
----------------------------------------------------------------------
diff --git a/proxy/src/main/thrift/proxy.thrift b/proxy/src/main/thrift/proxy.thrift
index 25510d1..00427c0 100644
--- a/proxy/src/main/thrift/proxy.thrift
+++ b/proxy/src/main/thrift/proxy.thrift
@@ -131,6 +131,10 @@ enum SystemPermission {
   DROP_USER = 5,
   ALTER_USER = 6,
   SYSTEM = 7,
+  CREATE_NAMESPACE = 8,
+  DROP_NAMESPACE = 9,
+  ALTER_NAMESPACE = 10,
+  OBTAIN_DELEGATION_TOKEN = 11,
 }
 
 enum ScanType {


[02/10] accumulo git commit: ACCUMULO-4519 patch from Yudong Wu

Posted by ct...@apache.org.
ACCUMULO-4519 patch from Yudong Wu

Adds missing system permission and namespace functionality to the proxy.


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

Branch: refs/heads/1.8
Commit: 025aacc9fde81d1d51394126fd550f07a71f260e
Parents: 13d3f5d
Author: Michael Wall <mj...@gmail.com>
Authored: Thu Feb 9 16:13:47 2017 -0500
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Thu Feb 9 16:24:18 2017 -0500

----------------------------------------------------------------------
 proxy/src/main/thrift/proxy.thrift | 4 ++++
 1 file changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/025aacc9/proxy/src/main/thrift/proxy.thrift
----------------------------------------------------------------------
diff --git a/proxy/src/main/thrift/proxy.thrift b/proxy/src/main/thrift/proxy.thrift
index 25510d1..00427c0 100644
--- a/proxy/src/main/thrift/proxy.thrift
+++ b/proxy/src/main/thrift/proxy.thrift
@@ -131,6 +131,10 @@ enum SystemPermission {
   DROP_USER = 5,
   ALTER_USER = 6,
   SYSTEM = 7,
+  CREATE_NAMESPACE = 8,
+  DROP_NAMESPACE = 9,
+  ALTER_NAMESPACE = 10,
+  OBTAIN_DELEGATION_TOKEN = 11,
 }
 
 enum ScanType {


[06/10] accumulo git commit: ACCUMULO-4519 regenerate thrift

Posted by ct...@apache.org.
ACCUMULO-4519 regenerate thrift


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

Branch: refs/heads/master
Commit: a9bf10ffff62f25d5810816db23ec80d6b06f61b
Parents: 025aacc
Author: Christopher Tubbs <ct...@apache.org>
Authored: Thu Feb 9 16:28:55 2017 -0500
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Thu Feb 9 16:28:55 2017 -0500

----------------------------------------------------------------------
 proxy/src/main/cpp/proxy_types.cpp                    | 14 +++++++++++---
 proxy/src/main/cpp/proxy_types.h                      |  6 +++++-
 .../accumulo/proxy/thrift/SystemPermission.java       | 14 +++++++++++++-
 proxy/src/main/python/ttypes.py                       | 12 ++++++++++++
 proxy/src/main/ruby/proxy_types.rb                    |  8 ++++++--
 5 files changed, 47 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/a9bf10ff/proxy/src/main/cpp/proxy_types.cpp
----------------------------------------------------------------------
diff --git a/proxy/src/main/cpp/proxy_types.cpp b/proxy/src/main/cpp/proxy_types.cpp
index a055b48..4a626f5 100644
--- a/proxy/src/main/cpp/proxy_types.cpp
+++ b/proxy/src/main/cpp/proxy_types.cpp
@@ -70,7 +70,11 @@ int _kSystemPermissionValues[] = {
   SystemPermission::CREATE_USER,
   SystemPermission::DROP_USER,
   SystemPermission::ALTER_USER,
-  SystemPermission::SYSTEM
+  SystemPermission::SYSTEM,
+  SystemPermission::CREATE_NAMESPACE,
+  SystemPermission::DROP_NAMESPACE,
+  SystemPermission::ALTER_NAMESPACE,
+  SystemPermission::OBTAIN_DELEGATION_TOKEN
 };
 const char* _kSystemPermissionNames[] = {
   "GRANT",
@@ -80,9 +84,13 @@ const char* _kSystemPermissionNames[] = {
   "CREATE_USER",
   "DROP_USER",
   "ALTER_USER",
-  "SYSTEM"
+  "SYSTEM",
+  "CREATE_NAMESPACE",
+  "DROP_NAMESPACE",
+  "ALTER_NAMESPACE",
+  "OBTAIN_DELEGATION_TOKEN"
 };
-const std::map<int, const char*> _SystemPermission_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(8, _kSystemPermissionValues, _kSystemPermissionNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+const std::map<int, const char*> _SystemPermission_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(12, _kSystemPermissionValues, _kSystemPermissionNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
 
 int _kScanTypeValues[] = {
   ScanType::SINGLE,

http://git-wip-us.apache.org/repos/asf/accumulo/blob/a9bf10ff/proxy/src/main/cpp/proxy_types.h
----------------------------------------------------------------------
diff --git a/proxy/src/main/cpp/proxy_types.h b/proxy/src/main/cpp/proxy_types.h
index 569de88..c0169ef 100644
--- a/proxy/src/main/cpp/proxy_types.h
+++ b/proxy/src/main/cpp/proxy_types.h
@@ -68,7 +68,11 @@ struct SystemPermission {
     CREATE_USER = 4,
     DROP_USER = 5,
     ALTER_USER = 6,
-    SYSTEM = 7
+    SYSTEM = 7,
+    CREATE_NAMESPACE = 8,
+    DROP_NAMESPACE = 9,
+    ALTER_NAMESPACE = 10,
+    OBTAIN_DELEGATION_TOKEN = 11
   };
 };
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/a9bf10ff/proxy/src/main/java/org/apache/accumulo/proxy/thrift/SystemPermission.java
----------------------------------------------------------------------
diff --git a/proxy/src/main/java/org/apache/accumulo/proxy/thrift/SystemPermission.java b/proxy/src/main/java/org/apache/accumulo/proxy/thrift/SystemPermission.java
index 929b83a..6ebb69a 100644
--- a/proxy/src/main/java/org/apache/accumulo/proxy/thrift/SystemPermission.java
+++ b/proxy/src/main/java/org/apache/accumulo/proxy/thrift/SystemPermission.java
@@ -35,7 +35,11 @@ import org.apache.thrift.TEnum;
   CREATE_USER(4),
   DROP_USER(5),
   ALTER_USER(6),
-  SYSTEM(7);
+  SYSTEM(7),
+  CREATE_NAMESPACE(8),
+  DROP_NAMESPACE(9),
+  ALTER_NAMESPACE(10),
+  OBTAIN_DELEGATION_TOKEN(11);
 
   private final int value;
 
@@ -72,6 +76,14 @@ import org.apache.thrift.TEnum;
         return ALTER_USER;
       case 7:
         return SYSTEM;
+      case 8:
+        return CREATE_NAMESPACE;
+      case 9:
+        return DROP_NAMESPACE;
+      case 10:
+        return ALTER_NAMESPACE;
+      case 11:
+        return OBTAIN_DELEGATION_TOKEN;
       default:
         return null;
     }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/a9bf10ff/proxy/src/main/python/ttypes.py
----------------------------------------------------------------------
diff --git a/proxy/src/main/python/ttypes.py b/proxy/src/main/python/ttypes.py
index 9444f71..a748c0a 100644
--- a/proxy/src/main/python/ttypes.py
+++ b/proxy/src/main/python/ttypes.py
@@ -91,6 +91,10 @@ class SystemPermission:
   DROP_USER = 5
   ALTER_USER = 6
   SYSTEM = 7
+  CREATE_NAMESPACE = 8
+  DROP_NAMESPACE = 9
+  ALTER_NAMESPACE = 10
+  OBTAIN_DELEGATION_TOKEN = 11
 
   _VALUES_TO_NAMES = {
     0: "GRANT",
@@ -101,6 +105,10 @@ class SystemPermission:
     5: "DROP_USER",
     6: "ALTER_USER",
     7: "SYSTEM",
+    8: "CREATE_NAMESPACE",
+    9: "DROP_NAMESPACE",
+    10: "ALTER_NAMESPACE",
+    11: "OBTAIN_DELEGATION_TOKEN",
   }
 
   _NAMES_TO_VALUES = {
@@ -112,6 +120,10 @@ class SystemPermission:
     "DROP_USER": 5,
     "ALTER_USER": 6,
     "SYSTEM": 7,
+    "CREATE_NAMESPACE": 8,
+    "DROP_NAMESPACE": 9,
+    "ALTER_NAMESPACE": 10,
+    "OBTAIN_DELEGATION_TOKEN": 11,
   }
 
 class ScanType:

http://git-wip-us.apache.org/repos/asf/accumulo/blob/a9bf10ff/proxy/src/main/ruby/proxy_types.rb
----------------------------------------------------------------------
diff --git a/proxy/src/main/ruby/proxy_types.rb b/proxy/src/main/ruby/proxy_types.rb
index 57306d1..522c80c 100644
--- a/proxy/src/main/ruby/proxy_types.rb
+++ b/proxy/src/main/ruby/proxy_types.rb
@@ -52,8 +52,12 @@ module Accumulo
     DROP_USER = 5
     ALTER_USER = 6
     SYSTEM = 7
-    VALUE_MAP = {0 => "GRANT", 1 => "CREATE_TABLE", 2 => "DROP_TABLE", 3 => "ALTER_TABLE", 4 => "CREATE_USER", 5 => "DROP_USER", 6 => "ALTER_USER", 7 => "SYSTEM"}
-    VALID_VALUES = Set.new([GRANT, CREATE_TABLE, DROP_TABLE, ALTER_TABLE, CREATE_USER, DROP_USER, ALTER_USER, SYSTEM]).freeze
+    CREATE_NAMESPACE = 8
+    DROP_NAMESPACE = 9
+    ALTER_NAMESPACE = 10
+    OBTAIN_DELEGATION_TOKEN = 11
+    VALUE_MAP = {0 => "GRANT", 1 => "CREATE_TABLE", 2 => "DROP_TABLE", 3 => "ALTER_TABLE", 4 => "CREATE_USER", 5 => "DROP_USER", 6 => "ALTER_USER", 7 => "SYSTEM", 8 => "CREATE_NAMESPACE", 9 => "DROP_NAMESPACE", 10 => "ALTER_NAMESPACE", 11 => "OBTAIN_DELEGATION_TOKEN"}
+    VALID_VALUES = Set.new([GRANT, CREATE_TABLE, DROP_TABLE, ALTER_TABLE, CREATE_USER, DROP_USER, ALTER_USER, SYSTEM, CREATE_NAMESPACE, DROP_NAMESPACE, ALTER_NAMESPACE, OBTAIN_DELEGATION_TOKEN]).freeze
   end
 
   module ScanType


[04/10] accumulo git commit: ACCUMULO-4519 regenerate thrift

Posted by ct...@apache.org.
ACCUMULO-4519 regenerate thrift


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

Branch: refs/heads/1.7
Commit: a9bf10ffff62f25d5810816db23ec80d6b06f61b
Parents: 025aacc
Author: Christopher Tubbs <ct...@apache.org>
Authored: Thu Feb 9 16:28:55 2017 -0500
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Thu Feb 9 16:28:55 2017 -0500

----------------------------------------------------------------------
 proxy/src/main/cpp/proxy_types.cpp                    | 14 +++++++++++---
 proxy/src/main/cpp/proxy_types.h                      |  6 +++++-
 .../accumulo/proxy/thrift/SystemPermission.java       | 14 +++++++++++++-
 proxy/src/main/python/ttypes.py                       | 12 ++++++++++++
 proxy/src/main/ruby/proxy_types.rb                    |  8 ++++++--
 5 files changed, 47 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/a9bf10ff/proxy/src/main/cpp/proxy_types.cpp
----------------------------------------------------------------------
diff --git a/proxy/src/main/cpp/proxy_types.cpp b/proxy/src/main/cpp/proxy_types.cpp
index a055b48..4a626f5 100644
--- a/proxy/src/main/cpp/proxy_types.cpp
+++ b/proxy/src/main/cpp/proxy_types.cpp
@@ -70,7 +70,11 @@ int _kSystemPermissionValues[] = {
   SystemPermission::CREATE_USER,
   SystemPermission::DROP_USER,
   SystemPermission::ALTER_USER,
-  SystemPermission::SYSTEM
+  SystemPermission::SYSTEM,
+  SystemPermission::CREATE_NAMESPACE,
+  SystemPermission::DROP_NAMESPACE,
+  SystemPermission::ALTER_NAMESPACE,
+  SystemPermission::OBTAIN_DELEGATION_TOKEN
 };
 const char* _kSystemPermissionNames[] = {
   "GRANT",
@@ -80,9 +84,13 @@ const char* _kSystemPermissionNames[] = {
   "CREATE_USER",
   "DROP_USER",
   "ALTER_USER",
-  "SYSTEM"
+  "SYSTEM",
+  "CREATE_NAMESPACE",
+  "DROP_NAMESPACE",
+  "ALTER_NAMESPACE",
+  "OBTAIN_DELEGATION_TOKEN"
 };
-const std::map<int, const char*> _SystemPermission_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(8, _kSystemPermissionValues, _kSystemPermissionNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+const std::map<int, const char*> _SystemPermission_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(12, _kSystemPermissionValues, _kSystemPermissionNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
 
 int _kScanTypeValues[] = {
   ScanType::SINGLE,

http://git-wip-us.apache.org/repos/asf/accumulo/blob/a9bf10ff/proxy/src/main/cpp/proxy_types.h
----------------------------------------------------------------------
diff --git a/proxy/src/main/cpp/proxy_types.h b/proxy/src/main/cpp/proxy_types.h
index 569de88..c0169ef 100644
--- a/proxy/src/main/cpp/proxy_types.h
+++ b/proxy/src/main/cpp/proxy_types.h
@@ -68,7 +68,11 @@ struct SystemPermission {
     CREATE_USER = 4,
     DROP_USER = 5,
     ALTER_USER = 6,
-    SYSTEM = 7
+    SYSTEM = 7,
+    CREATE_NAMESPACE = 8,
+    DROP_NAMESPACE = 9,
+    ALTER_NAMESPACE = 10,
+    OBTAIN_DELEGATION_TOKEN = 11
   };
 };
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/a9bf10ff/proxy/src/main/java/org/apache/accumulo/proxy/thrift/SystemPermission.java
----------------------------------------------------------------------
diff --git a/proxy/src/main/java/org/apache/accumulo/proxy/thrift/SystemPermission.java b/proxy/src/main/java/org/apache/accumulo/proxy/thrift/SystemPermission.java
index 929b83a..6ebb69a 100644
--- a/proxy/src/main/java/org/apache/accumulo/proxy/thrift/SystemPermission.java
+++ b/proxy/src/main/java/org/apache/accumulo/proxy/thrift/SystemPermission.java
@@ -35,7 +35,11 @@ import org.apache.thrift.TEnum;
   CREATE_USER(4),
   DROP_USER(5),
   ALTER_USER(6),
-  SYSTEM(7);
+  SYSTEM(7),
+  CREATE_NAMESPACE(8),
+  DROP_NAMESPACE(9),
+  ALTER_NAMESPACE(10),
+  OBTAIN_DELEGATION_TOKEN(11);
 
   private final int value;
 
@@ -72,6 +76,14 @@ import org.apache.thrift.TEnum;
         return ALTER_USER;
       case 7:
         return SYSTEM;
+      case 8:
+        return CREATE_NAMESPACE;
+      case 9:
+        return DROP_NAMESPACE;
+      case 10:
+        return ALTER_NAMESPACE;
+      case 11:
+        return OBTAIN_DELEGATION_TOKEN;
       default:
         return null;
     }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/a9bf10ff/proxy/src/main/python/ttypes.py
----------------------------------------------------------------------
diff --git a/proxy/src/main/python/ttypes.py b/proxy/src/main/python/ttypes.py
index 9444f71..a748c0a 100644
--- a/proxy/src/main/python/ttypes.py
+++ b/proxy/src/main/python/ttypes.py
@@ -91,6 +91,10 @@ class SystemPermission:
   DROP_USER = 5
   ALTER_USER = 6
   SYSTEM = 7
+  CREATE_NAMESPACE = 8
+  DROP_NAMESPACE = 9
+  ALTER_NAMESPACE = 10
+  OBTAIN_DELEGATION_TOKEN = 11
 
   _VALUES_TO_NAMES = {
     0: "GRANT",
@@ -101,6 +105,10 @@ class SystemPermission:
     5: "DROP_USER",
     6: "ALTER_USER",
     7: "SYSTEM",
+    8: "CREATE_NAMESPACE",
+    9: "DROP_NAMESPACE",
+    10: "ALTER_NAMESPACE",
+    11: "OBTAIN_DELEGATION_TOKEN",
   }
 
   _NAMES_TO_VALUES = {
@@ -112,6 +120,10 @@ class SystemPermission:
     "DROP_USER": 5,
     "ALTER_USER": 6,
     "SYSTEM": 7,
+    "CREATE_NAMESPACE": 8,
+    "DROP_NAMESPACE": 9,
+    "ALTER_NAMESPACE": 10,
+    "OBTAIN_DELEGATION_TOKEN": 11,
   }
 
 class ScanType:

http://git-wip-us.apache.org/repos/asf/accumulo/blob/a9bf10ff/proxy/src/main/ruby/proxy_types.rb
----------------------------------------------------------------------
diff --git a/proxy/src/main/ruby/proxy_types.rb b/proxy/src/main/ruby/proxy_types.rb
index 57306d1..522c80c 100644
--- a/proxy/src/main/ruby/proxy_types.rb
+++ b/proxy/src/main/ruby/proxy_types.rb
@@ -52,8 +52,12 @@ module Accumulo
     DROP_USER = 5
     ALTER_USER = 6
     SYSTEM = 7
-    VALUE_MAP = {0 => "GRANT", 1 => "CREATE_TABLE", 2 => "DROP_TABLE", 3 => "ALTER_TABLE", 4 => "CREATE_USER", 5 => "DROP_USER", 6 => "ALTER_USER", 7 => "SYSTEM"}
-    VALID_VALUES = Set.new([GRANT, CREATE_TABLE, DROP_TABLE, ALTER_TABLE, CREATE_USER, DROP_USER, ALTER_USER, SYSTEM]).freeze
+    CREATE_NAMESPACE = 8
+    DROP_NAMESPACE = 9
+    ALTER_NAMESPACE = 10
+    OBTAIN_DELEGATION_TOKEN = 11
+    VALUE_MAP = {0 => "GRANT", 1 => "CREATE_TABLE", 2 => "DROP_TABLE", 3 => "ALTER_TABLE", 4 => "CREATE_USER", 5 => "DROP_USER", 6 => "ALTER_USER", 7 => "SYSTEM", 8 => "CREATE_NAMESPACE", 9 => "DROP_NAMESPACE", 10 => "ALTER_NAMESPACE", 11 => "OBTAIN_DELEGATION_TOKEN"}
+    VALID_VALUES = Set.new([GRANT, CREATE_TABLE, DROP_TABLE, ALTER_TABLE, CREATE_USER, DROP_USER, ALTER_USER, SYSTEM, CREATE_NAMESPACE, DROP_NAMESPACE, ALTER_NAMESPACE, OBTAIN_DELEGATION_TOKEN]).freeze
   end
 
   module ScanType