You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by kt...@apache.org on 2016/04/04 20:30:31 UTC

[1/9] accumulo git commit: ACCUMULO-4147 Add Accumulo Namespace Operations to Proxy

Repository: accumulo
Updated Branches:
  refs/heads/master ada31a9b8 -> 8839fe511


http://git-wip-us.apache.org/repos/asf/accumulo/blob/8839fe51/test/src/main/java/org/apache/accumulo/test/proxy/SimpleProxyBase.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/proxy/SimpleProxyBase.java b/test/src/main/java/org/apache/accumulo/test/proxy/SimpleProxyBase.java
index c101a3a..ed31f58 100644
--- a/test/src/main/java/org/apache/accumulo/test/proxy/SimpleProxyBase.java
+++ b/test/src/main/java/org/apache/accumulo/test/proxy/SimpleProxyBase.java
@@ -48,6 +48,7 @@ import org.apache.accumulo.cluster.ClusterUser;
 import org.apache.accumulo.core.client.ClientConfiguration;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Instance;
+import org.apache.accumulo.core.client.impl.Namespaces;
 import org.apache.accumulo.core.client.security.tokens.KerberosToken;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.DefaultConfiguration;
@@ -55,6 +56,7 @@ import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.file.FileOperations;
 import org.apache.accumulo.core.file.FileSKVWriter;
+import org.apache.accumulo.core.iterators.DebugIterator;
 import org.apache.accumulo.core.iterators.DevNull;
 import org.apache.accumulo.core.iterators.SortedKeyValueIterator;
 import org.apache.accumulo.core.iterators.user.SummingCombiner;
@@ -62,6 +64,7 @@ import org.apache.accumulo.core.iterators.user.VersioningIterator;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.core.util.ByteBufferUtil;
+import org.apache.accumulo.examples.simple.constraints.MaxMutationSize;
 import org.apache.accumulo.examples.simple.constraints.NumericValueConstraint;
 import org.apache.accumulo.harness.MiniClusterHarness;
 import org.apache.accumulo.harness.SharedMiniClusterBase;
@@ -88,6 +91,10 @@ import org.apache.accumulo.proxy.thrift.IteratorSetting;
 import org.apache.accumulo.proxy.thrift.Key;
 import org.apache.accumulo.proxy.thrift.KeyValue;
 import org.apache.accumulo.proxy.thrift.MutationsRejectedException;
+import org.apache.accumulo.proxy.thrift.NamespaceExistsException;
+import org.apache.accumulo.proxy.thrift.NamespaceNotEmptyException;
+import org.apache.accumulo.proxy.thrift.NamespaceNotFoundException;
+import org.apache.accumulo.proxy.thrift.NamespacePermission;
 import org.apache.accumulo.proxy.thrift.PartialKey;
 import org.apache.accumulo.proxy.thrift.Range;
 import org.apache.accumulo.proxy.thrift.ScanColumn;
@@ -240,6 +247,7 @@ public abstract class SimpleProxyBase extends SharedMiniClusterBase {
 
   final IteratorSetting setting = new IteratorSetting(100, "slow", SlowIterator.class.getName(), Collections.singletonMap("sleepTime", "200"));
   String tableName;
+  String namespaceName;
   ByteBuffer badLogin;
 
   @Before
@@ -284,9 +292,16 @@ public abstract class SimpleProxyBase extends SharedMiniClusterBase {
       client.dropLocalUser(creds, "user");
     }
 
+    // Create some unique names for tables, namespaces, etc.
+    String[] uniqueNames = getUniqueNames(2);
+
     // Create a general table to be used
-    tableName = getUniqueNames(1)[0];
+    tableName = uniqueNames[0];
     client.createTable(creds, tableName, true, TimeType.MILLIS);
+
+    // Create a general namespace to be used
+    namespaceName = uniqueNames[1];
+    client.createNamespace(creds, namespaceName);
   }
 
   @After
@@ -304,6 +319,16 @@ public abstract class SimpleProxyBase extends SharedMiniClusterBase {
       }
     }
 
+    if (null != namespaceName) {
+      try {
+        if (client.namespaceExists(creds, namespaceName)) {
+          client.deleteNamespace(creds, namespaceName);
+        }
+      } catch (Exception e) {
+        log.warn("Failed to delete test namespace", e);
+      }
+    }
+
     // Close the transport after the test
     if (null != proxyClient) {
       proxyClient.close();
@@ -653,6 +678,113 @@ public abstract class SimpleProxyBase extends SharedMiniClusterBase {
     client.createConditionalWriter(badLogin, tableName, new ConditionalWriterOptions());
   }
 
+  @Test(expected = AccumuloSecurityException.class, timeout = 5000)
+  public void grantNamespacePermissionLoginFailure() throws Exception {
+    client.grantNamespacePermission(badLogin, "stooge", namespaceName, NamespacePermission.ALTER_NAMESPACE);
+  }
+
+  @Test(expected = AccumuloSecurityException.class, timeout = 5000)
+  public void hasNamespacePermissionLoginFailure() throws Exception {
+    client.hasNamespacePermission(badLogin, "stooge", namespaceName, NamespacePermission.ALTER_NAMESPACE);
+  }
+
+  @Test(expected = AccumuloSecurityException.class, timeout = 5000)
+  public void revokeNamespacePermissionLoginFailure() throws Exception {
+    client.revokeNamespacePermission(badLogin, "stooge", namespaceName, NamespacePermission.ALTER_NAMESPACE);
+  }
+
+  @Test(expected = AccumuloSecurityException.class, timeout = 5000)
+  public void listNamespacesLoginFailure() throws Exception {
+    client.listNamespaces(badLogin);
+  }
+
+  @Test(expected = AccumuloSecurityException.class, timeout = 5000)
+  public void namespaceExistsLoginFailure() throws Exception {
+    client.namespaceExists(badLogin, namespaceName);
+  }
+
+  @Test(expected = AccumuloSecurityException.class, timeout = 5000)
+  public void createNamespaceLoginFailure() throws Exception {
+    client.createNamespace(badLogin, "abcdef");
+  }
+
+  @Test(expected = AccumuloSecurityException.class, timeout = 5000)
+  public void deleteNamespaceLoginFailure() throws Exception {
+    client.deleteNamespace(badLogin, namespaceName);
+  }
+
+  @Test(expected = AccumuloSecurityException.class, timeout = 5000)
+  public void renameNamespaceLoginFailure() throws Exception {
+    client.renameNamespace(badLogin, namespaceName, "abcdef");
+  }
+
+  @Test(expected = AccumuloSecurityException.class, timeout = 5000)
+  public void setNamespacePropertyLoginFailure() throws Exception {
+    client.setNamespaceProperty(badLogin, namespaceName, "table.compaction.major.ratio", "4");
+  }
+
+  @Test(expected = AccumuloSecurityException.class, timeout = 5000)
+  public void removeNamespacePropertyLoginFailure() throws Exception {
+    client.removeNamespaceProperty(badLogin, namespaceName, "table.compaction.major.ratio");
+  }
+
+  @Test(expected = AccumuloSecurityException.class, timeout = 5000)
+  public void getNamespacePropertiesLoginFailure() throws Exception {
+    client.getNamespaceProperties(badLogin, namespaceName);
+  }
+
+  @Test(expected = AccumuloSecurityException.class, timeout = 5000)
+  public void namespaceIdMapLoginFailure() throws Exception {
+    client.namespaceIdMap(badLogin);
+  }
+
+  @Test(expected = AccumuloSecurityException.class, timeout = 5000)
+  public void attachNamespaceIteratorLoginFailure() throws Exception {
+    IteratorSetting setting = new IteratorSetting(100, "DebugTheThings", DebugIterator.class.getName(), Collections.<String,String> emptyMap());
+    client.attachNamespaceIterator(badLogin, namespaceName, setting, EnumSet.allOf(IteratorScope.class));
+  }
+
+  @Test(expected = AccumuloSecurityException.class, timeout = 5000)
+  public void removeNamespaceIteratorLoginFailure() throws Exception {
+    client.removeNamespaceIterator(badLogin, namespaceName, "DebugTheThings", EnumSet.allOf(IteratorScope.class));
+  }
+
+  @Test(expected = AccumuloSecurityException.class, timeout = 5000)
+  public void getNamespaceIteratorSettingLoginFailure() throws Exception {
+    client.getNamespaceIteratorSetting(badLogin, namespaceName, "DebugTheThings", IteratorScope.SCAN);
+  }
+
+  @Test(expected = AccumuloSecurityException.class, timeout = 5000)
+  public void listNamespaceIteratorsLoginFailure() throws Exception {
+    client.listNamespaceIterators(badLogin, namespaceName);
+  }
+
+  @Test(expected = AccumuloSecurityException.class, timeout = 5000)
+  public void checkNamespaceIteratorConflictsLoginFailure() throws Exception {
+    IteratorSetting setting = new IteratorSetting(100, "DebugTheThings", DebugIterator.class.getName(), Collections.<String,String> emptyMap());
+    client.checkNamespaceIteratorConflicts(badLogin, namespaceName, setting, EnumSet.allOf(IteratorScope.class));
+  }
+
+  @Test(expected = AccumuloSecurityException.class, timeout = 5000)
+  public void addNamespaceConstraintLoginFailure() throws Exception {
+    client.addNamespaceConstraint(badLogin, namespaceName, MaxMutationSize.class.getName());
+  }
+
+  @Test(expected = AccumuloSecurityException.class, timeout = 5000)
+  public void removeNamespaceConstraintLoginFailure() throws Exception {
+    client.removeNamespaceConstraint(badLogin, namespaceName, 1);
+  }
+
+  @Test(expected = AccumuloSecurityException.class, timeout = 5000)
+  public void listNamespaceConstraintsLoginFailure() throws Exception {
+    client.listNamespaceConstraints(badLogin, namespaceName);
+  }
+
+  @Test(expected = AccumuloSecurityException.class, timeout = 5000)
+  public void testNamespaceClassLoadLoginFailure() throws Exception {
+    client.testNamespaceClassLoad(badLogin, namespaceName, DebugIterator.class.getName(), SortedKeyValueIterator.class.getName());
+  }
+
   @Test
   public void tableNotFound() throws Exception {
     final String doesNotExist = "doesNotExists";
@@ -814,10 +946,74 @@ public abstract class SimpleProxyBase extends SharedMiniClusterBase {
     } catch (TableNotFoundException ex) {}
     try {
       client.createConditionalWriter(creds, doesNotExist, new ConditionalWriterOptions());
+      fail("exception not thrown");
     } catch (TableNotFoundException ex) {}
   }
 
   @Test
+  public void namespaceNotFound() throws Exception {
+    final String doesNotExist = "doesNotExists";
+    try {
+      client.deleteNamespace(creds, doesNotExist);
+      fail("exception not thrown");
+    } catch (NamespaceNotFoundException ex) {}
+    try {
+      client.renameNamespace(creds, doesNotExist, "abcdefg");
+      fail("exception not thrown");
+    } catch (NamespaceNotFoundException ex) {}
+    try {
+      client.setNamespaceProperty(creds, doesNotExist, "table.compaction.major.ratio", "4");
+      fail("exception not thrown");
+    } catch (NamespaceNotFoundException ex) {}
+    try {
+      client.removeNamespaceProperty(creds, doesNotExist, "table.compaction.major.ratio");
+      fail("exception not thrown");
+    } catch (NamespaceNotFoundException ex) {}
+    try {
+      client.getNamespaceProperties(creds, doesNotExist);
+      fail("exception not thrown");
+    } catch (NamespaceNotFoundException ex) {}
+    try {
+      IteratorSetting setting = new IteratorSetting(100, "DebugTheThings", DebugIterator.class.getName(), Collections.<String,String> emptyMap());
+      client.attachNamespaceIterator(creds, doesNotExist, setting, EnumSet.allOf(IteratorScope.class));
+      fail("exception not thrown");
+    } catch (NamespaceNotFoundException ex) {}
+    try {
+      client.removeNamespaceIterator(creds, doesNotExist, "DebugTheThings", EnumSet.allOf(IteratorScope.class));
+      fail("exception not thrown");
+    } catch (NamespaceNotFoundException ex) {}
+    try {
+      client.getNamespaceIteratorSetting(creds, doesNotExist, "DebugTheThings", IteratorScope.SCAN);
+      fail("exception not thrown");
+    } catch (NamespaceNotFoundException ex) {}
+    try {
+      client.listNamespaceIterators(creds, doesNotExist);
+      fail("exception not thrown");
+    } catch (NamespaceNotFoundException ex) {}
+    try {
+      IteratorSetting setting = new IteratorSetting(100, "DebugTheThings", DebugIterator.class.getName(), Collections.<String,String> emptyMap());
+      client.checkNamespaceIteratorConflicts(creds, doesNotExist, setting, EnumSet.allOf(IteratorScope.class));
+      fail("exception not thrown");
+    } catch (NamespaceNotFoundException ex) {}
+    try {
+      client.addNamespaceConstraint(creds, doesNotExist, MaxMutationSize.class.getName());
+      fail("exception not thrown");
+    } catch (NamespaceNotFoundException ex) {}
+    try {
+      client.removeNamespaceConstraint(creds, doesNotExist, 1);
+      fail("exception not thrown");
+    } catch (NamespaceNotFoundException ex) {}
+    try {
+      client.listNamespaceConstraints(creds, doesNotExist);
+      fail("exception not thrown");
+    } catch (NamespaceNotFoundException ex) {}
+    try {
+      client.testNamespaceClassLoad(creds, doesNotExist, DebugIterator.class.getName(), SortedKeyValueIterator.class.getName());
+      fail("exception not thrown");
+    } catch (NamespaceNotFoundException ex) {}
+  }
+
+  @Test
   public void testExists() throws Exception {
     client.createTable(creds, "ett1", false, TimeType.MILLIS);
     client.createTable(creds, "ett2", false, TimeType.MILLIS);
@@ -836,6 +1032,25 @@ public abstract class SimpleProxyBase extends SharedMiniClusterBase {
   }
 
   @Test
+  public void testNamespaceExists() throws Exception {
+    client.createNamespace(creds, "foobar");
+    try {
+      client.createNamespace(creds, namespaceName);
+      fail("exception not thrown");
+    } catch (NamespaceExistsException ex) {}
+    try {
+      client.renameNamespace(creds, "foobar", namespaceName);
+      fail("exception not thrown");
+    } catch (NamespaceExistsException ex) {}
+  }
+
+  @Test(expected = NamespaceNotEmptyException.class)
+  public void testNamespaceNotEmpty() throws Exception {
+    client.createTable(creds, namespaceName + ".abcdefg", true, TimeType.MILLIS);
+    client.deleteNamespace(creds, namespaceName);
+  }
+
+  @Test
   public void testUnknownScanner() throws Exception {
     String scanner = client.createScanner(creds, tableName, null);
     assertFalse(client.hasNext(scanner));
@@ -1364,6 +1579,105 @@ public abstract class SimpleProxyBase extends SharedMiniClusterBase {
   }
 
   @Test
+  public void namespacePermissions() throws Exception {
+    String userName;
+    ClusterUser otherClient = null;
+    ByteBuffer password = s2bb("password");
+    ByteBuffer user;
+
+    TestProxyClient origProxyClient = null;
+    Client origClient = null;
+    TestProxyClient userProxyClient = null;
+    Client userClient = null;
+
+    if (isKerberosEnabled()) {
+      otherClient = getKdc().getClientPrincipal(1);
+      userName = otherClient.getPrincipal();
+
+      UserGroupInformation.loginUserFromKeytab(otherClient.getPrincipal(), otherClient.getKeytab().getAbsolutePath());
+      final UserGroupInformation ugi = UserGroupInformation.getCurrentUser();
+      // Re-login in and make a new connection. Can't use the previous one
+
+      userProxyClient = new TestProxyClient(hostname, proxyPort, factory, proxyPrimary, ugi);
+
+      origProxyClient = proxyClient;
+      origClient = client;
+      userClient = client = userProxyClient.proxy();
+
+      user = client.login(userName, Collections.<String,String> emptyMap());
+    } else {
+      userName = getUniqueNames(1)[0];
+      // create a user
+      client.createLocalUser(creds, userName, password);
+      user = client.login(userName, s2pp(ByteBufferUtil.toString(password)));
+    }
+
+    // check permission failure
+    try {
+      client.createTable(user, namespaceName + ".fail", true, TimeType.MILLIS);
+      fail("should not create the table");
+    } catch (AccumuloSecurityException ex) {
+      if (isKerberosEnabled()) {
+        // Switch back to original client
+        UserGroupInformation.loginUserFromKeytab(clientPrincipal, clientKeytab.getAbsolutePath());
+        client = origClient;
+      }
+      assertFalse(client.listTables(creds).contains(namespaceName + ".fail"));
+    }
+
+    // grant permissions and test
+    assertFalse(client.hasNamespacePermission(creds, userName, namespaceName, NamespacePermission.CREATE_TABLE));
+    client.grantNamespacePermission(creds, userName, namespaceName, NamespacePermission.CREATE_TABLE);
+    assertTrue(client.hasNamespacePermission(creds, userName, namespaceName, NamespacePermission.CREATE_TABLE));
+    if (isKerberosEnabled()) {
+      // Switch back to the extra user
+      UserGroupInformation.loginUserFromKeytab(otherClient.getPrincipal(), otherClient.getKeytab().getAbsolutePath());
+      client = userClient;
+    }
+    client.createTable(user, namespaceName + ".success", true, TimeType.MILLIS);
+    if (isKerberosEnabled()) {
+      // Switch back to original client
+      UserGroupInformation.loginUserFromKeytab(clientPrincipal, clientKeytab.getAbsolutePath());
+      client = origClient;
+    }
+    assertTrue(client.listTables(creds).contains(namespaceName + ".success"));
+
+    // revoke permissions
+    client.revokeNamespacePermission(creds, userName, namespaceName, NamespacePermission.CREATE_TABLE);
+    assertFalse(client.hasNamespacePermission(creds, userName, namespaceName, NamespacePermission.CREATE_TABLE));
+    try {
+      if (isKerberosEnabled()) {
+        // Switch back to the extra user
+        UserGroupInformation.loginUserFromKeytab(otherClient.getPrincipal(), otherClient.getKeytab().getAbsolutePath());
+        client = userClient;
+      }
+      client.createTable(user, namespaceName + ".fail", true, TimeType.MILLIS);
+      fail("should not create the table");
+    } catch (AccumuloSecurityException ex) {
+      if (isKerberosEnabled()) {
+        // Switch back to original client
+        UserGroupInformation.loginUserFromKeytab(clientPrincipal, clientKeytab.getAbsolutePath());
+        client = origClient;
+      }
+      assertFalse(client.listTables(creds).contains(namespaceName + ".fail"));
+    }
+
+    // delete user
+    client.dropLocalUser(creds, userName);
+    Set<String> users = client.listLocalUsers(creds);
+    assertFalse("Should not see user after they are deleted", users.contains(userName));
+
+    if (isKerberosEnabled()) {
+      userProxyClient.close();
+      proxyClient = origProxyClient;
+      client = origClient;
+    }
+
+    // delete table from namespace otherwise we can't delete namespace during teardown
+    client.deleteTable(creds, namespaceName + ".success");
+  }
+
+  @Test
   public void testBatchWriter() throws Exception {
     client.addConstraint(creds, tableName, NumericValueConstraint.class.getName());
     // zookeeper propagation time
@@ -2278,4 +2592,95 @@ public abstract class SimpleProxyBase extends SharedMiniClusterBase {
 
     assertEquals(3, countFiles(tableName));
   }
+
+  @Test
+  public void namespaceOperations() throws Exception {
+    // default namespace and accumulo namespace
+    assertEquals("System namespace is wrong", client.systemNamespace(), Namespaces.ACCUMULO_NAMESPACE);
+    assertEquals("Default namespace is wrong", client.defaultNamespace(), Namespaces.DEFAULT_NAMESPACE);
+
+    // namespace existance and namespace listing
+    assertTrue("Namespace created during setup should exist", client.namespaceExists(creds, namespaceName));
+    assertTrue("Namespace listing should contain namespace created during setup", client.listNamespaces(creds).contains(namespaceName));
+
+    // create new namespace
+    String newNamespace = "foobar";
+    client.createNamespace(creds, newNamespace);
+
+    assertTrue("Namespace just created should exist", client.namespaceExists(creds, newNamespace));
+    assertTrue("Namespace listing should contain just created", client.listNamespaces(creds).contains(newNamespace));
+
+    // rename the namespace
+    String renamedNamespace = "foobar_renamed";
+    client.renameNamespace(creds, newNamespace, renamedNamespace);
+
+    assertTrue("Renamed namespace should exist", client.namespaceExists(creds, renamedNamespace));
+    assertTrue("Namespace listing should contain renamed namespace", client.listNamespaces(creds).contains(renamedNamespace));
+
+    assertFalse("Original namespace should no longer exist", client.namespaceExists(creds, newNamespace));
+    assertFalse("Namespace listing should no longer contain original namespace", client.listNamespaces(creds).contains(newNamespace));
+
+    // delete the namespace
+    client.deleteNamespace(creds, renamedNamespace);
+    assertFalse("Renamed namespace should no longer exist", client.namespaceExists(creds, renamedNamespace));
+    assertFalse("Namespace listing should no longer contain renamed namespace", client.listNamespaces(creds).contains(renamedNamespace));
+
+    // namespace properties
+    Map<String,String> cfg = client.getNamespaceProperties(creds, namespaceName);
+    String defaultProp = cfg.get("table.compaction.major.ratio");
+    assertNotEquals(defaultProp, "10"); // let's make sure we are setting this value to something different than default...
+    client.setNamespaceProperty(creds, namespaceName, "table.compaction.major.ratio", "10");
+    for (int i = 0; i < 5; i++) {
+      cfg = client.getNamespaceProperties(creds, namespaceName);
+      if ("10".equals(cfg.get("table.compaction.major.ratio"))) {
+        break;
+      }
+      sleepUninterruptibly(200, TimeUnit.MILLISECONDS);
+    }
+    assertTrue("Namespace should contain table.compaction.major.ratio property",
+        client.getNamespaceProperties(creds, namespaceName).containsKey("table.compaction.major.ratio"));
+    assertEquals("Namespace property table.compaction.major.ratio property should equal 10",
+        client.getNamespaceProperties(creds, namespaceName).get("table.compaction.major.ratio"), "10");
+    client.removeNamespaceProperty(creds, namespaceName, "table.compaction.major.ratio");
+    for (int i = 0; i < 5; i++) {
+      cfg = client.getNamespaceProperties(creds, namespaceName);
+      if (!defaultProp.equals(cfg.get("table.compaction.major.ratio"))) {
+        break;
+      }
+      sleepUninterruptibly(200, TimeUnit.MILLISECONDS);
+    }
+    assertEquals("Namespace should have default value for table.compaction.major.ratio", defaultProp, cfg.get("table.compaction.major.ratio"));
+
+    // namespace ID map
+    assertTrue("Namespace ID map should contain accumulo", client.namespaceIdMap(creds).containsKey("accumulo"));
+    assertTrue("Namespace ID map should contain namespace created during setup", client.namespaceIdMap(creds).containsKey(namespaceName));
+
+    // namespace iterators
+    IteratorSetting setting = new IteratorSetting(100, "DebugTheThings", DebugIterator.class.getName(), Collections.<String,String> emptyMap());
+    client.attachNamespaceIterator(creds, namespaceName, setting, EnumSet.of(IteratorScope.SCAN));
+    assertEquals("Wrong iterator setting returned", setting, client.getNamespaceIteratorSetting(creds, namespaceName, "DebugTheThings", IteratorScope.SCAN));
+    assertTrue("Namespace iterator settings should contain iterator just added",
+        client.listNamespaceIterators(creds, namespaceName).containsKey("DebugTheThings"));
+    assertEquals("Namespace iterator listing should contain iterator scope just added", EnumSet.of(IteratorScope.SCAN),
+        client.listNamespaceIterators(creds, namespaceName).get("DebugTheThings"));
+    client.checkNamespaceIteratorConflicts(creds, namespaceName, setting, EnumSet.of(IteratorScope.MAJC));
+    client.removeNamespaceIterator(creds, namespaceName, "DebugTheThings", EnumSet.of(IteratorScope.SCAN));
+    assertFalse("Namespace iterator settings should contain iterator just added",
+        client.listNamespaceIterators(creds, namespaceName).containsKey("DebugTheThings"));
+
+    // namespace constraints
+    int id = client.addNamespaceConstraint(creds, namespaceName, MaxMutationSize.class.getName());
+    assertTrue("Namespace should contain max mutation size constraint",
+        client.listNamespaceConstraints(creds, namespaceName).containsKey(MaxMutationSize.class.getName()));
+    assertEquals("Namespace max mutation size constraint id is wrong", id,
+        (int) client.listNamespaceConstraints(creds, namespaceName).get(MaxMutationSize.class.getName()));
+    client.removeNamespaceConstraint(creds, namespaceName, id);
+    assertFalse("Namespace should no longer contain max mutation size constraint",
+        client.listNamespaceConstraints(creds, namespaceName).containsKey(MaxMutationSize.class.getName()));
+
+    // namespace class load
+    assertTrue("Namespace class load should work",
+        client.testNamespaceClassLoad(creds, namespaceName, DebugIterator.class.getName(), SortedKeyValueIterator.class.getName()));
+    assertFalse("Namespace class load should not work", client.testNamespaceClassLoad(creds, namespaceName, "foo.bar", SortedKeyValueIterator.class.getName()));
+  }
 }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/8839fe51/test/src/main/java/org/apache/accumulo/test/proxy/TestProxyNamespaceOperations.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/proxy/TestProxyNamespaceOperations.java b/test/src/main/java/org/apache/accumulo/test/proxy/TestProxyNamespaceOperations.java
new file mode 100644
index 0000000..8dc2990
--- /dev/null
+++ b/test/src/main/java/org/apache/accumulo/test/proxy/TestProxyNamespaceOperations.java
@@ -0,0 +1,165 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.accumulo.test.proxy;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.nio.ByteBuffer;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Properties;
+import java.util.Set;
+
+import org.apache.accumulo.core.client.impl.Namespaces;
+import org.apache.accumulo.core.client.security.tokens.PasswordToken;
+import org.apache.accumulo.proxy.Proxy;
+import org.apache.accumulo.proxy.thrift.AccumuloException;
+import org.apache.accumulo.proxy.thrift.IteratorScope;
+import org.apache.accumulo.proxy.thrift.IteratorSetting;
+import org.apache.thrift.TException;
+import org.apache.thrift.protocol.TCompactProtocol;
+import org.apache.thrift.server.TServer;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import com.google.common.net.HostAndPort;
+
+public class TestProxyNamespaceOperations {
+
+  protected static TServer proxy;
+  protected static TestProxyClient tpc;
+  protected static ByteBuffer userpass;
+  protected static final int port = 10198;
+  protected static final String testnamespace = "testns";
+
+  @BeforeClass
+  public static void setup() throws Exception {
+    Properties prop = new Properties();
+    prop.setProperty("useMockInstance", "true");
+    prop.put("tokenClass", PasswordToken.class.getName());
+
+    proxy = Proxy.createProxyServer(HostAndPort.fromParts("localhost", port), new TCompactProtocol.Factory(), prop).server;
+    while (!proxy.isServing()) {
+      Thread.sleep(500);
+    }
+    tpc = new TestProxyClient("localhost", port);
+    userpass = tpc.proxy().login("root", Collections.singletonMap("password", ""));
+  }
+
+  @AfterClass
+  public static void tearDown() throws InterruptedException {
+    proxy.stop();
+  }
+
+  @Before
+  public void makeTestNamespace() throws Exception {
+    tpc.proxy().createNamespace(userpass, testnamespace);
+  }
+
+  @After
+  public void deleteTestNamespace() throws Exception {
+    tpc.proxy().deleteNamespace(userpass, testnamespace);
+  }
+
+  @Test
+  public void createExistsDelete() throws TException {
+    tpc.proxy().createNamespace(userpass, "testns2");
+    assertTrue(tpc.proxy().namespaceExists(userpass, "testns2"));
+    tpc.proxy().deleteNamespace(userpass, "testns2");
+    assertFalse(tpc.proxy().namespaceExists(userpass, "testns2"));
+  }
+
+  @Test
+  public void listRename() throws TException {
+    assertFalse(tpc.proxy().namespaceExists(userpass, "testns2"));
+    tpc.proxy().renameNamespace(userpass, testnamespace, "testns2");
+    assertTrue(tpc.proxy().namespaceExists(userpass, "testns2"));
+    tpc.proxy().renameNamespace(userpass, "testns2", testnamespace);
+    assertTrue(tpc.proxy().listNamespaces(userpass).contains(testnamespace));
+    assertFalse(tpc.proxy().listNamespaces(userpass).contains("testns2"));
+  }
+
+  @Test
+  public void systemDefault() throws TException {
+    assertEquals(tpc.proxy().systemNamespace(), Namespaces.ACCUMULO_NAMESPACE);
+    assertEquals(tpc.proxy().defaultNamespace(), Namespaces.DEFAULT_NAMESPACE);
+  }
+
+  @Test
+  public void namespaceProperties() throws TException {
+    tpc.proxy().setNamespaceProperty(userpass, testnamespace, "test.property1", "wharrrgarbl");
+    assertEquals(tpc.proxy().getNamespaceProperties(userpass, testnamespace).get("test.property1"), "wharrrgarbl");
+    tpc.proxy().removeNamespaceProperty(userpass, testnamespace, "test.property1");
+    assertNull(tpc.proxy().getNamespaceProperties(userpass, testnamespace).get("test.property1"));
+  }
+
+  @Ignore("MockInstance doesn't return expected results for this function.")
+  @Test
+  public void namespaceIds() throws TException {
+    assertTrue(tpc.proxy().namespaceIdMap(userpass).containsKey("accumulo"));
+    assertEquals(tpc.proxy().namespaceIdMap(userpass).get("accumulo"), "+accumulo");
+  }
+
+  @Test
+  public void namespaceIterators() throws TException {
+    IteratorSetting setting = new IteratorSetting(40, "DebugTheThings", "org.apache.accumulo.core.iterators.DebugIterator", new HashMap<String,String>());
+    Set<IteratorScope> scopes = new HashSet<>();
+    scopes.add(IteratorScope.SCAN);
+    tpc.proxy().attachNamespaceIterator(userpass, testnamespace, setting, scopes);
+    assertEquals(setting, tpc.proxy().getNamespaceIteratorSetting(userpass, testnamespace, "DebugTheThings", IteratorScope.SCAN));
+    assertTrue(tpc.proxy().listNamespaceIterators(userpass, testnamespace).containsKey("DebugTheThings"));
+    Set<IteratorScope> scopes2 = new HashSet<>();
+    scopes2.add(IteratorScope.MINC);
+    tpc.proxy().checkNamespaceIteratorConflicts(userpass, testnamespace, setting, scopes2);
+    tpc.proxy().removeNamespaceIterator(userpass, testnamespace, "DebugTheThings", scopes);
+    assertFalse(tpc.proxy().listNamespaceIterators(userpass, testnamespace).containsKey("DebugTheThings"));
+  }
+
+  @Test(expected = AccumuloException.class)
+  public void namespaceIteratorConflict() throws TException {
+    IteratorSetting setting = new IteratorSetting(40, "DebugTheThings", "org.apache.accumulo.core.iterators.DebugIterator", new HashMap<String,String>());
+    Set<IteratorScope> scopes = new HashSet<>();
+    scopes.add(IteratorScope.SCAN);
+    tpc.proxy().attachNamespaceIterator(userpass, testnamespace, setting, scopes);
+    tpc.proxy().checkNamespaceIteratorConflicts(userpass, testnamespace, setting, scopes);
+  }
+
+  @Test
+  public void namespaceConstraints() throws TException {
+    int constraintId = tpc.proxy().addNamespaceConstraint(userpass, testnamespace, "org.apache.accumulo.examples.simple.constraints.MaxMutationSize");
+    assertTrue(tpc.proxy().listNamespaceConstraints(userpass, testnamespace).containsKey("org.apache.accumulo.examples.simple.constraints.MaxMutationSize"));
+    assertEquals(constraintId,
+        (int) tpc.proxy().listNamespaceConstraints(userpass, testnamespace).get("org.apache.accumulo.examples.simple.constraints.MaxMutationSize"));
+    tpc.proxy().removeNamespaceConstraint(userpass, testnamespace, constraintId);
+    assertFalse(tpc.proxy().listNamespaceConstraints(userpass, testnamespace).containsKey("org.apache.accumulo.examples.simple.constraints.MaxMutationSize"));
+  }
+
+  @Test
+  public void classLoad() throws TException {
+    assertTrue(tpc.proxy().testNamespaceClassLoad(userpass, testnamespace, "org.apache.accumulo.core.iterators.user.VersioningIterator",
+        "org.apache.accumulo.core.iterators.SortedKeyValueIterator"));
+    assertFalse(tpc.proxy().testNamespaceClassLoad(userpass, testnamespace, "org.apache.accumulo.core.iterators.user.VersioningIterator", "dummy"));
+  }
+}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/8839fe51/test/src/main/java/org/apache/accumulo/test/proxy/TestProxySecurityOperations.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/proxy/TestProxySecurityOperations.java b/test/src/main/java/org/apache/accumulo/test/proxy/TestProxySecurityOperations.java
index eda38e5..c2ddfb7 100644
--- a/test/src/main/java/org/apache/accumulo/test/proxy/TestProxySecurityOperations.java
+++ b/test/src/main/java/org/apache/accumulo/test/proxy/TestProxySecurityOperations.java
@@ -31,6 +31,7 @@ import java.util.TreeMap;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.util.ByteBufferUtil;
 import org.apache.accumulo.proxy.Proxy;
+import org.apache.accumulo.proxy.thrift.NamespacePermission;
 import org.apache.accumulo.proxy.thrift.SystemPermission;
 import org.apache.accumulo.proxy.thrift.TablePermission;
 import org.apache.accumulo.proxy.thrift.TimeType;
@@ -52,6 +53,7 @@ public class TestProxySecurityOperations {
   protected static final int port = 10196;
   protected static final String testtable = "testtable";
   protected static final String testuser = "VonJines";
+  protected static final String testnamespace = "testns";
   protected static final ByteBuffer testpw = ByteBuffer.wrap("fiveones".getBytes());
 
   @BeforeClass
@@ -77,12 +79,14 @@ public class TestProxySecurityOperations {
   public void makeTestTableAndUser() throws Exception {
     tpc.proxy().createTable(userpass, testtable, true, TimeType.MILLIS);
     tpc.proxy().createLocalUser(userpass, testuser, testpw);
+    tpc.proxy().createNamespace(userpass, testnamespace);
   }
 
   @After
   public void deleteTestTable() throws Exception {
     tpc.proxy().deleteTable(userpass, testtable);
     tpc.proxy().dropLocalUser(userpass, testuser);
+    tpc.proxy().deleteNamespace(userpass, testnamespace);
   }
 
   @Test
@@ -138,6 +142,15 @@ public class TestProxySecurityOperations {
     }
   }
 
+  @Test
+  public void namespacePermissions() throws TException {
+    tpc.proxy().grantNamespacePermission(userpass, testuser, testnamespace, NamespacePermission.ALTER_NAMESPACE);
+    assertTrue(tpc.proxy().hasNamespacePermission(userpass, testuser, testnamespace, NamespacePermission.ALTER_NAMESPACE));
+
+    tpc.proxy().revokeNamespacePermission(userpass, testuser, testnamespace, NamespacePermission.ALTER_NAMESPACE);
+    assertFalse(tpc.proxy().hasNamespacePermission(userpass, testuser, testnamespace, NamespacePermission.ALTER_NAMESPACE));
+  }
+
   private Map<String,String> bb2pp(ByteBuffer cf) {
     Map<String,String> toRet = new TreeMap<String,String>();
     toRet.put("password", ByteBufferUtil.toString(cf));


[9/9] accumulo git commit: ACCUMULO-4147 Add Accumulo Namespace Operations to Proxy

Posted by kt...@apache.org.
ACCUMULO-4147 Add Accumulo Namespace Operations to Proxy

Squashed commit of the following:

commit a97782a97bddd0495fc493c7484907ff29b9e023
Author: Tristen Georgiou <tr...@gmail.com>
Date:   Tue Mar 29 22:29:55 2016 -0700

    Added in missing calls to Assert.fail() to ensure that expected exceptions are thrown and removed a function call that doesn't actually throw the exception.

commit 3b9cff9219cecc93392e32741177531ed7d1dbe5
Merge: 9d2dc05 1d49030
Author: Tristen Georgiou <tr...@gmail.com>
Date:   Fri Mar 25 14:03:48 2016 -0700

    Merge remote-tracking branch 'upstream/master'

commit 9d2dc05dde1a3896af1ac64e0e2bea67d784ad89
Author: Tristen Georgiou <tr...@gmail.com>
Date:   Fri Mar 25 14:01:52 2016 -0700

    Added in integration tests for the proxy namespace operations.

commit 9cb8bc88fbc205ca841bf59159c5060fede43990
Merge: eacedaa c4d6eee
Author: Tristen Georgiou <tg...@phemi.com>
Date:   Thu Feb 25 17:05:55 2016 -0800

    Merge remote-tracking branch 'upstream/master'

commit eacedaaccd9d79d8a1f2303a2aef15599acfcb10
Author: Tristen Georgiou <tg...@phemi.com>
Date:   Thu Feb 25 17:03:17 2016 -0800

    Added in IT tests for namespace operations and added in a namespace example file under the python examples .

commit 8dc5ab95d97f5c825222ab2ed52afaf2553e05a2
Merge: e149233 2651ba8
Author: Tristen Georgiou <tg...@phemi.com>
Date:   Thu Feb 25 11:50:34 2016 -0800

    Merge remote-tracking branch 'upstream/master'

commit e149233c5340329410d83270a523fdb6a8a57cb9
Author: Tristen Georgiou <tr...@gmail.com>
Date:   Sat Feb 20 12:13:58 2016 -0800

    Formatting update.

commit cc254d7857adc696413afd6ff0d945f955af5853
Author: Tristen Georgiou <tr...@gmail.com>
Date:   Sat Feb 20 10:55:21 2016 -0800

    Added in namespace security operation permission functions.

commit 7e3c4d40c7ec6df43730e142b5dc87fa498caebe
Author: Tristen Georgiou <tg...@phemi.com>
Date:   Fri Feb 19 16:10:21 2016 -0800

    Initial implementation for proxy namespace operations.


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

Branch: refs/heads/master
Commit: 8839fe5116337bbbf1e9b81109d0e9127fef7715
Parents: ada31a9
Author: Tristen Georgiou <tg...@phemi.com>
Authored: Mon Apr 4 12:19:41 2016 -0400
Committer: Keith Turner <kt...@apache.org>
Committed: Mon Apr 4 13:47:10 2016 -0400

----------------------------------------------------------------------
 proxy/examples/python/TestNamespace.py          |   172 +
 proxy/src/main/cpp/AccumuloProxy.cpp            | 33610 ++++---
 proxy/src/main/cpp/AccumuloProxy.h              |  5162 +-
 .../main/cpp/AccumuloProxy_server.skeleton.cpp  |   115 +
 proxy/src/main/cpp/proxy_types.cpp              |   315 +
 proxy/src/main/cpp/proxy_types.h                |   166 +
 .../org/apache/accumulo/proxy/ProxyServer.java  |   289 +
 .../accumulo/proxy/thrift/AccumuloProxy.java    | 88369 +++++++++++------
 .../proxy/thrift/NamespaceExistsException.java  |   414 +
 .../thrift/NamespaceNotEmptyException.java      |   414 +
 .../thrift/NamespaceNotFoundException.java      |   414 +
 .../proxy/thrift/NamespacePermission.java       |    82 +
 proxy/src/main/python/AccumuloProxy-remote      |   161 +
 proxy/src/main/python/AccumuloProxy.py          | 15767 ++-
 proxy/src/main/python/ttypes.py                 |   239 +
 proxy/src/main/ruby/accumulo_proxy.rb           |  1740 +-
 proxy/src/main/ruby/proxy_types.rb              |    83 +
 proxy/src/main/thrift/proxy.thrift              |    61 +-
 .../accumulo/test/proxy/SimpleProxyBase.java    |   407 +-
 .../proxy/TestProxyNamespaceOperations.java     |   165 +
 .../test/proxy/TestProxySecurityOperations.java |    13 +
 21 files changed, 102216 insertions(+), 45942 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/8839fe51/proxy/examples/python/TestNamespace.py
----------------------------------------------------------------------
diff --git a/proxy/examples/python/TestNamespace.py b/proxy/examples/python/TestNamespace.py
new file mode 100644
index 0000000..e7d2377
--- /dev/null
+++ b/proxy/examples/python/TestNamespace.py
@@ -0,0 +1,172 @@
+#! /usr/bin/env python
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from thrift.protocol import TCompactProtocol
+from thrift.transport import TSocket, TTransport
+
+from proxy import AccumuloProxy
+from proxy.ttypes import NamespacePermission, IteratorSetting, IteratorScope, AccumuloException
+
+
+def main():
+    transport = TSocket.TSocket('localhost', 42424)
+    transport = TTransport.TFramedTransport(transport)
+    protocol = TCompactProtocol.TCompactProtocol(transport)
+    client = AccumuloProxy.Client(protocol)
+    transport.open()
+    login = client.login('root', {'password': 'password'})
+
+    client.createLocalUser(login, 'user1', 'password1')
+
+    print client.listNamespaces(login)
+
+    # create a namespace and give the user1 all permissions
+    print 'creating namespace testing'
+    client.createNamespace(login, 'testing')
+    assert client.namespaceExists(login, 'testing')
+    print client.listNamespaces(login)
+
+    print 'testing namespace renaming'
+    client.renameNamespace(login, 'testing', 'testing2')
+    assert not client.namespaceExists(login, 'testing')
+    assert client.namespaceExists(login, 'testing2')
+    client.renameNamespace(login, 'testing2', 'testing')
+    assert not client.namespaceExists(login, 'testing2')
+    assert client.namespaceExists(login, 'testing')
+
+    print 'granting all namespace permissions to user1'
+    for k, v in NamespacePermission._VALUES_TO_NAMES.iteritems():
+        client.grantNamespacePermission(login, 'user1', 'testing', k)
+
+    # make sure the last operation worked
+    for k, v in NamespacePermission._VALUES_TO_NAMES.iteritems():
+        assert client.hasNamespacePermission(login, 'user1', 'testing', k), \
+            'user1 does\'nt have namespace permission %s' % v
+
+    print 'default namespace: ' + client.defaultNamespace()
+    print 'system namespace: ' + client.systemNamespace()
+
+    # grab the namespace properties
+    print 'retrieving namespace properties'
+    props = client.getNamespaceProperties(login, 'testing')
+    assert props and props['table.compaction.major.ratio'] == '3'
+
+    # update a property and verify it is good
+    print 'setting namespace property table.compaction.major.ratio = 4'
+    client.setNamespaceProperty(login, 'testing', 'table.compaction.major.ratio', '4')
+    props = client.getNamespaceProperties(login, 'testing')
+    assert props and props['table.compaction.major.ratio'] == '4'
+
+    print 'retrieving namespace ID map'
+    nsids = client.namespaceIdMap(login)
+    assert nsids and 'accumulo' in nsids
+
+    print 'attaching debug iterator to namespace testing'
+    setting = IteratorSetting(priority=40, name='DebugTheThings',
+                              iteratorClass='org.apache.accumulo.core.iterators.DebugIterator', properties={})
+    client.attachNamespaceIterator(login, 'testing', setting, [IteratorScope.SCAN])
+    setting = client.getNamespaceIteratorSetting(login, 'testing', 'DebugTheThings', IteratorScope.SCAN)
+    assert setting and setting.name == 'DebugTheThings'
+
+    # make sure the iterator is in the list
+    iters = client.listNamespaceIterators(login, 'testing')
+    found = False
+    for name, scopes in iters.iteritems():
+        if name == 'DebugTheThings':
+            found = True
+            break
+    assert found
+
+    print 'checking for iterator conflicts'
+
+    # this next statment should be fine since we are on a different scope
+    client.checkNamespaceIteratorConflicts(login, 'testing', setting, [IteratorScope.MINC])
+
+    # this time it should throw an exception since we have already added the iterator with this scope
+    try:
+        client.checkNamespaceIteratorConflicts(login, 'testing', setting, [IteratorScope.SCAN, IteratorScope.MINC])
+    except AccumuloException:
+        pass
+    else:
+        assert False, 'There should have been a namespace iterator conflict!'
+
+    print 'removing debug iterator from namespace testing'
+    client.removeNamespaceIterator(login, 'testing', 'DebugTheThings', [IteratorScope.SCAN])
+
+    # make sure the iterator is NOT in the list anymore
+    iters = client.listNamespaceIterators(login, 'testing')
+    found = False
+    for name, scopes in iters.iteritems():
+        if name == 'DebugTheThings':
+            found = True
+            break
+    assert not found
+
+    print 'adding max mutation size namespace constraint'
+    constraintid = client.addNamespaceConstraint(login, 'testing',
+                                                 'org.apache.accumulo.examples.simple.constraints.MaxMutationSize')
+
+    print 'make sure constraint was added'
+    constraints = client.listNamespaceConstraints(login, 'testing')
+    found = False
+    for name, cid in constraints.iteritems():
+        if cid == constraintid and name == 'org.apache.accumulo.examples.simple.constraints.MaxMutationSize':
+            found = True
+            break
+    assert found
+
+    print 'remove max mutation size namespace constraint'
+    client.removeNamespaceConstraint(login, 'testing', constraintid)
+
+    print 'make sure constraint was removed'
+    constraints = client.listNamespaceConstraints(login, 'testing')
+    found = False
+    for name, cid in constraints.iteritems():
+        if cid == constraintid and name == 'org.apache.accumulo.examples.simple.constraints.MaxMutationSize':
+            found = True
+            break
+    assert not found
+
+    print 'test a namespace class load of the VersioningIterator'
+    res = client.testNamespaceClassLoad(login, 'testing', 'org.apache.accumulo.core.iterators.user.VersioningIterator',
+                                        'org.apache.accumulo.core.iterators.SortedKeyValueIterator')
+    assert res
+
+    print 'test a bad namespace class load of the VersioningIterator'
+    res = client.testNamespaceClassLoad(login, 'testing', 'org.apache.accumulo.core.iterators.user.VersioningIterator',
+                                        'dummy')
+    assert not res
+
+    # revoke the permissions
+    print 'revoking namespace permissions for user1'
+    for k, v in NamespacePermission._VALUES_TO_NAMES.iteritems():
+        client.revokeNamespacePermission(login, 'user1', 'testing', k)
+
+    # make sure the last operation worked
+    for k, v in NamespacePermission._VALUES_TO_NAMES.iteritems():
+        assert not client.hasNamespacePermission(login, 'user1', 'testing', k), \
+            'user1 does\'nt have namespace permission %s' % v
+
+    print 'deleting namespace testing'
+    client.deleteNamespace(login, 'testing')
+    assert not client.namespaceExists(login, 'testing')
+
+    print 'deleting user1'
+    client.dropLocalUser(login, 'user1')
+
+if __name__ == "__main__":
+    main()


[7/9] accumulo git commit: ACCUMULO-4147 Add Accumulo Namespace Operations to Proxy

Posted by kt...@apache.org.
http://git-wip-us.apache.org/repos/asf/accumulo/blob/8839fe51/proxy/src/main/cpp/AccumuloProxy.h
----------------------------------------------------------------------
diff --git a/proxy/src/main/cpp/AccumuloProxy.h b/proxy/src/main/cpp/AccumuloProxy.h
index a14fda9..429cf55 100644
--- a/proxy/src/main/cpp/AccumuloProxy.h
+++ b/proxy/src/main/cpp/AccumuloProxy.h
@@ -97,6 +97,9 @@ class AccumuloProxyIf {
   virtual void listLocalUsers(std::set<std::string> & _return, const std::string& login) = 0;
   virtual void revokeSystemPermission(const std::string& login, const std::string& user, const SystemPermission::type perm) = 0;
   virtual void revokeTablePermission(const std::string& login, const std::string& user, const std::string& table, const TablePermission::type perm) = 0;
+  virtual void grantNamespacePermission(const std::string& login, const std::string& user, const std::string& namespaceName, const NamespacePermission::type perm) = 0;
+  virtual bool hasNamespacePermission(const std::string& login, const std::string& user, const std::string& namespaceName, const NamespacePermission::type perm) = 0;
+  virtual void revokeNamespacePermission(const std::string& login, const std::string& user, const std::string& namespaceName, const NamespacePermission::type perm) = 0;
   virtual void createBatchScanner(std::string& _return, const std::string& login, const std::string& tableName, const BatchScanOptions& options) = 0;
   virtual void createScanner(std::string& _return, const std::string& login, const std::string& tableName, const ScanOptions& options) = 0;
   virtual bool hasNext(const std::string& scanner) = 0;
@@ -114,6 +117,26 @@ class AccumuloProxyIf {
   virtual void closeConditionalWriter(const std::string& conditionalWriter) = 0;
   virtual void getRowRange(Range& _return, const std::string& row) = 0;
   virtual void getFollowing(Key& _return, const Key& key, const PartialKey::type part) = 0;
+  virtual void systemNamespace(std::string& _return) = 0;
+  virtual void defaultNamespace(std::string& _return) = 0;
+  virtual void listNamespaces(std::vector<std::string> & _return, const std::string& login) = 0;
+  virtual bool namespaceExists(const std::string& login, const std::string& namespaceName) = 0;
+  virtual void createNamespace(const std::string& login, const std::string& namespaceName) = 0;
+  virtual void deleteNamespace(const std::string& login, const std::string& namespaceName) = 0;
+  virtual void renameNamespace(const std::string& login, const std::string& oldNamespaceName, const std::string& newNamespaceName) = 0;
+  virtual void setNamespaceProperty(const std::string& login, const std::string& namespaceName, const std::string& property, const std::string& value) = 0;
+  virtual void removeNamespaceProperty(const std::string& login, const std::string& namespaceName, const std::string& property) = 0;
+  virtual void getNamespaceProperties(std::map<std::string, std::string> & _return, const std::string& login, const std::string& namespaceName) = 0;
+  virtual void namespaceIdMap(std::map<std::string, std::string> & _return, const std::string& login) = 0;
+  virtual void attachNamespaceIterator(const std::string& login, const std::string& namespaceName, const IteratorSetting& setting, const std::set<IteratorScope::type> & scopes) = 0;
+  virtual void removeNamespaceIterator(const std::string& login, const std::string& namespaceName, const std::string& name, const std::set<IteratorScope::type> & scopes) = 0;
+  virtual void getNamespaceIteratorSetting(IteratorSetting& _return, const std::string& login, const std::string& namespaceName, const std::string& name, const IteratorScope::type scope) = 0;
+  virtual void listNamespaceIterators(std::map<std::string, std::set<IteratorScope::type> > & _return, const std::string& login, const std::string& namespaceName) = 0;
+  virtual void checkNamespaceIteratorConflicts(const std::string& login, const std::string& namespaceName, const IteratorSetting& setting, const std::set<IteratorScope::type> & scopes) = 0;
+  virtual int32_t addNamespaceConstraint(const std::string& login, const std::string& namespaceName, const std::string& constraintClassName) = 0;
+  virtual void removeNamespaceConstraint(const std::string& login, const std::string& namespaceName, const int32_t id) = 0;
+  virtual void listNamespaceConstraints(std::map<std::string, int32_t> & _return, const std::string& login, const std::string& namespaceName) = 0;
+  virtual bool testNamespaceClassLoad(const std::string& login, const std::string& namespaceName, const std::string& className, const std::string& asTypeName) = 0;
 };
 
 class AccumuloProxyIfFactory {
@@ -330,6 +353,16 @@ class AccumuloProxyNull : virtual public AccumuloProxyIf {
   void revokeTablePermission(const std::string& /* login */, const std::string& /* user */, const std::string& /* table */, const TablePermission::type /* perm */) {
     return;
   }
+  void grantNamespacePermission(const std::string& /* login */, const std::string& /* user */, const std::string& /* namespaceName */, const NamespacePermission::type /* perm */) {
+    return;
+  }
+  bool hasNamespacePermission(const std::string& /* login */, const std::string& /* user */, const std::string& /* namespaceName */, const NamespacePermission::type /* perm */) {
+    bool _return = false;
+    return _return;
+  }
+  void revokeNamespacePermission(const std::string& /* login */, const std::string& /* user */, const std::string& /* namespaceName */, const NamespacePermission::type /* perm */) {
+    return;
+  }
   void createBatchScanner(std::string& /* _return */, const std::string& /* login */, const std::string& /* tableName */, const BatchScanOptions& /* options */) {
     return;
   }
@@ -383,6 +416,69 @@ class AccumuloProxyNull : virtual public AccumuloProxyIf {
   void getFollowing(Key& /* _return */, const Key& /* key */, const PartialKey::type /* part */) {
     return;
   }
+  void systemNamespace(std::string& /* _return */) {
+    return;
+  }
+  void defaultNamespace(std::string& /* _return */) {
+    return;
+  }
+  void listNamespaces(std::vector<std::string> & /* _return */, const std::string& /* login */) {
+    return;
+  }
+  bool namespaceExists(const std::string& /* login */, const std::string& /* namespaceName */) {
+    bool _return = false;
+    return _return;
+  }
+  void createNamespace(const std::string& /* login */, const std::string& /* namespaceName */) {
+    return;
+  }
+  void deleteNamespace(const std::string& /* login */, const std::string& /* namespaceName */) {
+    return;
+  }
+  void renameNamespace(const std::string& /* login */, const std::string& /* oldNamespaceName */, const std::string& /* newNamespaceName */) {
+    return;
+  }
+  void setNamespaceProperty(const std::string& /* login */, const std::string& /* namespaceName */, const std::string& /* property */, const std::string& /* value */) {
+    return;
+  }
+  void removeNamespaceProperty(const std::string& /* login */, const std::string& /* namespaceName */, const std::string& /* property */) {
+    return;
+  }
+  void getNamespaceProperties(std::map<std::string, std::string> & /* _return */, const std::string& /* login */, const std::string& /* namespaceName */) {
+    return;
+  }
+  void namespaceIdMap(std::map<std::string, std::string> & /* _return */, const std::string& /* login */) {
+    return;
+  }
+  void attachNamespaceIterator(const std::string& /* login */, const std::string& /* namespaceName */, const IteratorSetting& /* setting */, const std::set<IteratorScope::type> & /* scopes */) {
+    return;
+  }
+  void removeNamespaceIterator(const std::string& /* login */, const std::string& /* namespaceName */, const std::string& /* name */, const std::set<IteratorScope::type> & /* scopes */) {
+    return;
+  }
+  void getNamespaceIteratorSetting(IteratorSetting& /* _return */, const std::string& /* login */, const std::string& /* namespaceName */, const std::string& /* name */, const IteratorScope::type /* scope */) {
+    return;
+  }
+  void listNamespaceIterators(std::map<std::string, std::set<IteratorScope::type> > & /* _return */, const std::string& /* login */, const std::string& /* namespaceName */) {
+    return;
+  }
+  void checkNamespaceIteratorConflicts(const std::string& /* login */, const std::string& /* namespaceName */, const IteratorSetting& /* setting */, const std::set<IteratorScope::type> & /* scopes */) {
+    return;
+  }
+  int32_t addNamespaceConstraint(const std::string& /* login */, const std::string& /* namespaceName */, const std::string& /* constraintClassName */) {
+    int32_t _return = 0;
+    return _return;
+  }
+  void removeNamespaceConstraint(const std::string& /* login */, const std::string& /* namespaceName */, const int32_t /* id */) {
+    return;
+  }
+  void listNamespaceConstraints(std::map<std::string, int32_t> & /* _return */, const std::string& /* login */, const std::string& /* namespaceName */) {
+    return;
+  }
+  bool testNamespaceClassLoad(const std::string& /* login */, const std::string& /* namespaceName */, const std::string& /* className */, const std::string& /* asTypeName */) {
+    bool _return = false;
+    return _return;
+  }
 };
 
 typedef struct _AccumuloProxy_login_args__isset {
@@ -8392,49 +8488,55 @@ class AccumuloProxy_revokeTablePermission_presult {
 
 };
 
-typedef struct _AccumuloProxy_createBatchScanner_args__isset {
-  _AccumuloProxy_createBatchScanner_args__isset() : login(false), tableName(false), options(false) {}
+typedef struct _AccumuloProxy_grantNamespacePermission_args__isset {
+  _AccumuloProxy_grantNamespacePermission_args__isset() : login(false), user(false), namespaceName(false), perm(false) {}
   bool login :1;
-  bool tableName :1;
-  bool options :1;
-} _AccumuloProxy_createBatchScanner_args__isset;
+  bool user :1;
+  bool namespaceName :1;
+  bool perm :1;
+} _AccumuloProxy_grantNamespacePermission_args__isset;
 
-class AccumuloProxy_createBatchScanner_args {
+class AccumuloProxy_grantNamespacePermission_args {
  public:
 
-  AccumuloProxy_createBatchScanner_args(const AccumuloProxy_createBatchScanner_args&);
-  AccumuloProxy_createBatchScanner_args& operator=(const AccumuloProxy_createBatchScanner_args&);
-  AccumuloProxy_createBatchScanner_args() : login(), tableName() {
+  AccumuloProxy_grantNamespacePermission_args(const AccumuloProxy_grantNamespacePermission_args&);
+  AccumuloProxy_grantNamespacePermission_args& operator=(const AccumuloProxy_grantNamespacePermission_args&);
+  AccumuloProxy_grantNamespacePermission_args() : login(), user(), namespaceName(), perm((NamespacePermission::type)0) {
   }
 
-  virtual ~AccumuloProxy_createBatchScanner_args() throw();
+  virtual ~AccumuloProxy_grantNamespacePermission_args() throw();
   std::string login;
-  std::string tableName;
-  BatchScanOptions options;
+  std::string user;
+  std::string namespaceName;
+  NamespacePermission::type perm;
 
-  _AccumuloProxy_createBatchScanner_args__isset __isset;
+  _AccumuloProxy_grantNamespacePermission_args__isset __isset;
 
   void __set_login(const std::string& val);
 
-  void __set_tableName(const std::string& val);
+  void __set_user(const std::string& val);
 
-  void __set_options(const BatchScanOptions& val);
+  void __set_namespaceName(const std::string& val);
 
-  bool operator == (const AccumuloProxy_createBatchScanner_args & rhs) const
+  void __set_perm(const NamespacePermission::type val);
+
+  bool operator == (const AccumuloProxy_grantNamespacePermission_args & rhs) const
   {
     if (!(login == rhs.login))
       return false;
-    if (!(tableName == rhs.tableName))
+    if (!(user == rhs.user))
       return false;
-    if (!(options == rhs.options))
+    if (!(namespaceName == rhs.namespaceName))
+      return false;
+    if (!(perm == rhs.perm))
       return false;
     return true;
   }
-  bool operator != (const AccumuloProxy_createBatchScanner_args &rhs) const {
+  bool operator != (const AccumuloProxy_grantNamespacePermission_args &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const AccumuloProxy_createBatchScanner_args & ) const;
+  bool operator < (const AccumuloProxy_grantNamespacePermission_args & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
@@ -8442,141 +8544,132 @@ class AccumuloProxy_createBatchScanner_args {
 };
 
 
-class AccumuloProxy_createBatchScanner_pargs {
+class AccumuloProxy_grantNamespacePermission_pargs {
  public:
 
 
-  virtual ~AccumuloProxy_createBatchScanner_pargs() throw();
+  virtual ~AccumuloProxy_grantNamespacePermission_pargs() throw();
   const std::string* login;
-  const std::string* tableName;
-  const BatchScanOptions* options;
+  const std::string* user;
+  const std::string* namespaceName;
+  const NamespacePermission::type* perm;
 
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
 };
 
-typedef struct _AccumuloProxy_createBatchScanner_result__isset {
-  _AccumuloProxy_createBatchScanner_result__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
-  bool success :1;
+typedef struct _AccumuloProxy_grantNamespacePermission_result__isset {
+  _AccumuloProxy_grantNamespacePermission_result__isset() : ouch1(false), ouch2(false) {}
   bool ouch1 :1;
   bool ouch2 :1;
-  bool ouch3 :1;
-} _AccumuloProxy_createBatchScanner_result__isset;
+} _AccumuloProxy_grantNamespacePermission_result__isset;
 
-class AccumuloProxy_createBatchScanner_result {
+class AccumuloProxy_grantNamespacePermission_result {
  public:
 
-  AccumuloProxy_createBatchScanner_result(const AccumuloProxy_createBatchScanner_result&);
-  AccumuloProxy_createBatchScanner_result& operator=(const AccumuloProxy_createBatchScanner_result&);
-  AccumuloProxy_createBatchScanner_result() : success() {
+  AccumuloProxy_grantNamespacePermission_result(const AccumuloProxy_grantNamespacePermission_result&);
+  AccumuloProxy_grantNamespacePermission_result& operator=(const AccumuloProxy_grantNamespacePermission_result&);
+  AccumuloProxy_grantNamespacePermission_result() {
   }
 
-  virtual ~AccumuloProxy_createBatchScanner_result() throw();
-  std::string success;
+  virtual ~AccumuloProxy_grantNamespacePermission_result() throw();
   AccumuloException ouch1;
   AccumuloSecurityException ouch2;
-  TableNotFoundException ouch3;
-
-  _AccumuloProxy_createBatchScanner_result__isset __isset;
 
-  void __set_success(const std::string& val);
+  _AccumuloProxy_grantNamespacePermission_result__isset __isset;
 
   void __set_ouch1(const AccumuloException& val);
 
   void __set_ouch2(const AccumuloSecurityException& val);
 
-  void __set_ouch3(const TableNotFoundException& val);
-
-  bool operator == (const AccumuloProxy_createBatchScanner_result & rhs) const
+  bool operator == (const AccumuloProxy_grantNamespacePermission_result & rhs) const
   {
-    if (!(success == rhs.success))
-      return false;
     if (!(ouch1 == rhs.ouch1))
       return false;
     if (!(ouch2 == rhs.ouch2))
       return false;
-    if (!(ouch3 == rhs.ouch3))
-      return false;
     return true;
   }
-  bool operator != (const AccumuloProxy_createBatchScanner_result &rhs) const {
+  bool operator != (const AccumuloProxy_grantNamespacePermission_result &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const AccumuloProxy_createBatchScanner_result & ) const;
+  bool operator < (const AccumuloProxy_grantNamespacePermission_result & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
 };
 
-typedef struct _AccumuloProxy_createBatchScanner_presult__isset {
-  _AccumuloProxy_createBatchScanner_presult__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
-  bool success :1;
+typedef struct _AccumuloProxy_grantNamespacePermission_presult__isset {
+  _AccumuloProxy_grantNamespacePermission_presult__isset() : ouch1(false), ouch2(false) {}
   bool ouch1 :1;
   bool ouch2 :1;
-  bool ouch3 :1;
-} _AccumuloProxy_createBatchScanner_presult__isset;
+} _AccumuloProxy_grantNamespacePermission_presult__isset;
 
-class AccumuloProxy_createBatchScanner_presult {
+class AccumuloProxy_grantNamespacePermission_presult {
  public:
 
 
-  virtual ~AccumuloProxy_createBatchScanner_presult() throw();
-  std::string* success;
+  virtual ~AccumuloProxy_grantNamespacePermission_presult() throw();
   AccumuloException ouch1;
   AccumuloSecurityException ouch2;
-  TableNotFoundException ouch3;
 
-  _AccumuloProxy_createBatchScanner_presult__isset __isset;
+  _AccumuloProxy_grantNamespacePermission_presult__isset __isset;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
 
 };
 
-typedef struct _AccumuloProxy_createScanner_args__isset {
-  _AccumuloProxy_createScanner_args__isset() : login(false), tableName(false), options(false) {}
+typedef struct _AccumuloProxy_hasNamespacePermission_args__isset {
+  _AccumuloProxy_hasNamespacePermission_args__isset() : login(false), user(false), namespaceName(false), perm(false) {}
   bool login :1;
-  bool tableName :1;
-  bool options :1;
-} _AccumuloProxy_createScanner_args__isset;
+  bool user :1;
+  bool namespaceName :1;
+  bool perm :1;
+} _AccumuloProxy_hasNamespacePermission_args__isset;
 
-class AccumuloProxy_createScanner_args {
+class AccumuloProxy_hasNamespacePermission_args {
  public:
 
-  AccumuloProxy_createScanner_args(const AccumuloProxy_createScanner_args&);
-  AccumuloProxy_createScanner_args& operator=(const AccumuloProxy_createScanner_args&);
-  AccumuloProxy_createScanner_args() : login(), tableName() {
+  AccumuloProxy_hasNamespacePermission_args(const AccumuloProxy_hasNamespacePermission_args&);
+  AccumuloProxy_hasNamespacePermission_args& operator=(const AccumuloProxy_hasNamespacePermission_args&);
+  AccumuloProxy_hasNamespacePermission_args() : login(), user(), namespaceName(), perm((NamespacePermission::type)0) {
   }
 
-  virtual ~AccumuloProxy_createScanner_args() throw();
+  virtual ~AccumuloProxy_hasNamespacePermission_args() throw();
   std::string login;
-  std::string tableName;
-  ScanOptions options;
+  std::string user;
+  std::string namespaceName;
+  NamespacePermission::type perm;
 
-  _AccumuloProxy_createScanner_args__isset __isset;
+  _AccumuloProxy_hasNamespacePermission_args__isset __isset;
 
   void __set_login(const std::string& val);
 
-  void __set_tableName(const std::string& val);
+  void __set_user(const std::string& val);
 
-  void __set_options(const ScanOptions& val);
+  void __set_namespaceName(const std::string& val);
 
-  bool operator == (const AccumuloProxy_createScanner_args & rhs) const
+  void __set_perm(const NamespacePermission::type val);
+
+  bool operator == (const AccumuloProxy_hasNamespacePermission_args & rhs) const
   {
     if (!(login == rhs.login))
       return false;
-    if (!(tableName == rhs.tableName))
+    if (!(user == rhs.user))
       return false;
-    if (!(options == rhs.options))
+    if (!(namespaceName == rhs.namespaceName))
+      return false;
+    if (!(perm == rhs.perm))
       return false;
     return true;
   }
-  bool operator != (const AccumuloProxy_createScanner_args &rhs) const {
+  bool operator != (const AccumuloProxy_hasNamespacePermission_args &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const AccumuloProxy_createScanner_args & ) const;
+  bool operator < (const AccumuloProxy_hasNamespacePermission_args & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
@@ -8584,52 +8677,49 @@ class AccumuloProxy_createScanner_args {
 };
 
 
-class AccumuloProxy_createScanner_pargs {
+class AccumuloProxy_hasNamespacePermission_pargs {
  public:
 
 
-  virtual ~AccumuloProxy_createScanner_pargs() throw();
+  virtual ~AccumuloProxy_hasNamespacePermission_pargs() throw();
   const std::string* login;
-  const std::string* tableName;
-  const ScanOptions* options;
+  const std::string* user;
+  const std::string* namespaceName;
+  const NamespacePermission::type* perm;
 
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
 };
 
-typedef struct _AccumuloProxy_createScanner_result__isset {
-  _AccumuloProxy_createScanner_result__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
+typedef struct _AccumuloProxy_hasNamespacePermission_result__isset {
+  _AccumuloProxy_hasNamespacePermission_result__isset() : success(false), ouch1(false), ouch2(false) {}
   bool success :1;
   bool ouch1 :1;
   bool ouch2 :1;
-  bool ouch3 :1;
-} _AccumuloProxy_createScanner_result__isset;
+} _AccumuloProxy_hasNamespacePermission_result__isset;
 
-class AccumuloProxy_createScanner_result {
+class AccumuloProxy_hasNamespacePermission_result {
  public:
 
-  AccumuloProxy_createScanner_result(const AccumuloProxy_createScanner_result&);
-  AccumuloProxy_createScanner_result& operator=(const AccumuloProxy_createScanner_result&);
-  AccumuloProxy_createScanner_result() : success() {
+  AccumuloProxy_hasNamespacePermission_result(const AccumuloProxy_hasNamespacePermission_result&);
+  AccumuloProxy_hasNamespacePermission_result& operator=(const AccumuloProxy_hasNamespacePermission_result&);
+  AccumuloProxy_hasNamespacePermission_result() : success(0) {
   }
 
-  virtual ~AccumuloProxy_createScanner_result() throw();
-  std::string success;
+  virtual ~AccumuloProxy_hasNamespacePermission_result() throw();
+  bool success;
   AccumuloException ouch1;
   AccumuloSecurityException ouch2;
-  TableNotFoundException ouch3;
 
-  _AccumuloProxy_createScanner_result__isset __isset;
+  _AccumuloProxy_hasNamespacePermission_result__isset __isset;
 
-  void __set_success(const std::string& val);
+  void __set_success(const bool val);
 
   void __set_ouch1(const AccumuloException& val);
 
   void __set_ouch2(const AccumuloSecurityException& val);
 
-  void __set_ouch3(const TableNotFoundException& val);
-
-  bool operator == (const AccumuloProxy_createScanner_result & rhs) const
+  bool operator == (const AccumuloProxy_hasNamespacePermission_result & rhs) const
   {
     if (!(success == rhs.success))
       return false;
@@ -8637,76 +8727,90 @@ class AccumuloProxy_createScanner_result {
       return false;
     if (!(ouch2 == rhs.ouch2))
       return false;
-    if (!(ouch3 == rhs.ouch3))
-      return false;
     return true;
   }
-  bool operator != (const AccumuloProxy_createScanner_result &rhs) const {
+  bool operator != (const AccumuloProxy_hasNamespacePermission_result &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const AccumuloProxy_createScanner_result & ) const;
+  bool operator < (const AccumuloProxy_hasNamespacePermission_result & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
 };
 
-typedef struct _AccumuloProxy_createScanner_presult__isset {
-  _AccumuloProxy_createScanner_presult__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
+typedef struct _AccumuloProxy_hasNamespacePermission_presult__isset {
+  _AccumuloProxy_hasNamespacePermission_presult__isset() : success(false), ouch1(false), ouch2(false) {}
   bool success :1;
   bool ouch1 :1;
   bool ouch2 :1;
-  bool ouch3 :1;
-} _AccumuloProxy_createScanner_presult__isset;
+} _AccumuloProxy_hasNamespacePermission_presult__isset;
 
-class AccumuloProxy_createScanner_presult {
+class AccumuloProxy_hasNamespacePermission_presult {
  public:
 
 
-  virtual ~AccumuloProxy_createScanner_presult() throw();
-  std::string* success;
+  virtual ~AccumuloProxy_hasNamespacePermission_presult() throw();
+  bool* success;
   AccumuloException ouch1;
   AccumuloSecurityException ouch2;
-  TableNotFoundException ouch3;
 
-  _AccumuloProxy_createScanner_presult__isset __isset;
+  _AccumuloProxy_hasNamespacePermission_presult__isset __isset;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
 
 };
 
-typedef struct _AccumuloProxy_hasNext_args__isset {
-  _AccumuloProxy_hasNext_args__isset() : scanner(false) {}
-  bool scanner :1;
-} _AccumuloProxy_hasNext_args__isset;
+typedef struct _AccumuloProxy_revokeNamespacePermission_args__isset {
+  _AccumuloProxy_revokeNamespacePermission_args__isset() : login(false), user(false), namespaceName(false), perm(false) {}
+  bool login :1;
+  bool user :1;
+  bool namespaceName :1;
+  bool perm :1;
+} _AccumuloProxy_revokeNamespacePermission_args__isset;
 
-class AccumuloProxy_hasNext_args {
+class AccumuloProxy_revokeNamespacePermission_args {
  public:
 
-  AccumuloProxy_hasNext_args(const AccumuloProxy_hasNext_args&);
-  AccumuloProxy_hasNext_args& operator=(const AccumuloProxy_hasNext_args&);
-  AccumuloProxy_hasNext_args() : scanner() {
+  AccumuloProxy_revokeNamespacePermission_args(const AccumuloProxy_revokeNamespacePermission_args&);
+  AccumuloProxy_revokeNamespacePermission_args& operator=(const AccumuloProxy_revokeNamespacePermission_args&);
+  AccumuloProxy_revokeNamespacePermission_args() : login(), user(), namespaceName(), perm((NamespacePermission::type)0) {
   }
 
-  virtual ~AccumuloProxy_hasNext_args() throw();
-  std::string scanner;
+  virtual ~AccumuloProxy_revokeNamespacePermission_args() throw();
+  std::string login;
+  std::string user;
+  std::string namespaceName;
+  NamespacePermission::type perm;
 
-  _AccumuloProxy_hasNext_args__isset __isset;
+  _AccumuloProxy_revokeNamespacePermission_args__isset __isset;
 
-  void __set_scanner(const std::string& val);
+  void __set_login(const std::string& val);
 
-  bool operator == (const AccumuloProxy_hasNext_args & rhs) const
+  void __set_user(const std::string& val);
+
+  void __set_namespaceName(const std::string& val);
+
+  void __set_perm(const NamespacePermission::type val);
+
+  bool operator == (const AccumuloProxy_revokeNamespacePermission_args & rhs) const
   {
-    if (!(scanner == rhs.scanner))
+    if (!(login == rhs.login))
+      return false;
+    if (!(user == rhs.user))
+      return false;
+    if (!(namespaceName == rhs.namespaceName))
+      return false;
+    if (!(perm == rhs.perm))
       return false;
     return true;
   }
-  bool operator != (const AccumuloProxy_hasNext_args &rhs) const {
+  bool operator != (const AccumuloProxy_revokeNamespacePermission_args &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const AccumuloProxy_hasNext_args & ) const;
+  bool operator < (const AccumuloProxy_revokeNamespacePermission_args & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
@@ -8714,111 +8818,126 @@ class AccumuloProxy_hasNext_args {
 };
 
 
-class AccumuloProxy_hasNext_pargs {
+class AccumuloProxy_revokeNamespacePermission_pargs {
  public:
 
 
-  virtual ~AccumuloProxy_hasNext_pargs() throw();
-  const std::string* scanner;
+  virtual ~AccumuloProxy_revokeNamespacePermission_pargs() throw();
+  const std::string* login;
+  const std::string* user;
+  const std::string* namespaceName;
+  const NamespacePermission::type* perm;
 
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
 };
 
-typedef struct _AccumuloProxy_hasNext_result__isset {
-  _AccumuloProxy_hasNext_result__isset() : success(false), ouch1(false) {}
-  bool success :1;
+typedef struct _AccumuloProxy_revokeNamespacePermission_result__isset {
+  _AccumuloProxy_revokeNamespacePermission_result__isset() : ouch1(false), ouch2(false) {}
   bool ouch1 :1;
-} _AccumuloProxy_hasNext_result__isset;
+  bool ouch2 :1;
+} _AccumuloProxy_revokeNamespacePermission_result__isset;
 
-class AccumuloProxy_hasNext_result {
+class AccumuloProxy_revokeNamespacePermission_result {
  public:
 
-  AccumuloProxy_hasNext_result(const AccumuloProxy_hasNext_result&);
-  AccumuloProxy_hasNext_result& operator=(const AccumuloProxy_hasNext_result&);
-  AccumuloProxy_hasNext_result() : success(0) {
+  AccumuloProxy_revokeNamespacePermission_result(const AccumuloProxy_revokeNamespacePermission_result&);
+  AccumuloProxy_revokeNamespacePermission_result& operator=(const AccumuloProxy_revokeNamespacePermission_result&);
+  AccumuloProxy_revokeNamespacePermission_result() {
   }
 
-  virtual ~AccumuloProxy_hasNext_result() throw();
-  bool success;
-  UnknownScanner ouch1;
+  virtual ~AccumuloProxy_revokeNamespacePermission_result() throw();
+  AccumuloException ouch1;
+  AccumuloSecurityException ouch2;
 
-  _AccumuloProxy_hasNext_result__isset __isset;
+  _AccumuloProxy_revokeNamespacePermission_result__isset __isset;
 
-  void __set_success(const bool val);
+  void __set_ouch1(const AccumuloException& val);
 
-  void __set_ouch1(const UnknownScanner& val);
+  void __set_ouch2(const AccumuloSecurityException& val);
 
-  bool operator == (const AccumuloProxy_hasNext_result & rhs) const
+  bool operator == (const AccumuloProxy_revokeNamespacePermission_result & rhs) const
   {
-    if (!(success == rhs.success))
-      return false;
     if (!(ouch1 == rhs.ouch1))
       return false;
+    if (!(ouch2 == rhs.ouch2))
+      return false;
     return true;
   }
-  bool operator != (const AccumuloProxy_hasNext_result &rhs) const {
+  bool operator != (const AccumuloProxy_revokeNamespacePermission_result &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const AccumuloProxy_hasNext_result & ) const;
+  bool operator < (const AccumuloProxy_revokeNamespacePermission_result & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
 };
 
-typedef struct _AccumuloProxy_hasNext_presult__isset {
-  _AccumuloProxy_hasNext_presult__isset() : success(false), ouch1(false) {}
-  bool success :1;
+typedef struct _AccumuloProxy_revokeNamespacePermission_presult__isset {
+  _AccumuloProxy_revokeNamespacePermission_presult__isset() : ouch1(false), ouch2(false) {}
   bool ouch1 :1;
-} _AccumuloProxy_hasNext_presult__isset;
+  bool ouch2 :1;
+} _AccumuloProxy_revokeNamespacePermission_presult__isset;
 
-class AccumuloProxy_hasNext_presult {
+class AccumuloProxy_revokeNamespacePermission_presult {
  public:
 
 
-  virtual ~AccumuloProxy_hasNext_presult() throw();
-  bool* success;
-  UnknownScanner ouch1;
+  virtual ~AccumuloProxy_revokeNamespacePermission_presult() throw();
+  AccumuloException ouch1;
+  AccumuloSecurityException ouch2;
 
-  _AccumuloProxy_hasNext_presult__isset __isset;
+  _AccumuloProxy_revokeNamespacePermission_presult__isset __isset;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
 
 };
 
-typedef struct _AccumuloProxy_nextEntry_args__isset {
-  _AccumuloProxy_nextEntry_args__isset() : scanner(false) {}
-  bool scanner :1;
-} _AccumuloProxy_nextEntry_args__isset;
+typedef struct _AccumuloProxy_createBatchScanner_args__isset {
+  _AccumuloProxy_createBatchScanner_args__isset() : login(false), tableName(false), options(false) {}
+  bool login :1;
+  bool tableName :1;
+  bool options :1;
+} _AccumuloProxy_createBatchScanner_args__isset;
 
-class AccumuloProxy_nextEntry_args {
+class AccumuloProxy_createBatchScanner_args {
  public:
 
-  AccumuloProxy_nextEntry_args(const AccumuloProxy_nextEntry_args&);
-  AccumuloProxy_nextEntry_args& operator=(const AccumuloProxy_nextEntry_args&);
-  AccumuloProxy_nextEntry_args() : scanner() {
+  AccumuloProxy_createBatchScanner_args(const AccumuloProxy_createBatchScanner_args&);
+  AccumuloProxy_createBatchScanner_args& operator=(const AccumuloProxy_createBatchScanner_args&);
+  AccumuloProxy_createBatchScanner_args() : login(), tableName() {
   }
 
-  virtual ~AccumuloProxy_nextEntry_args() throw();
-  std::string scanner;
+  virtual ~AccumuloProxy_createBatchScanner_args() throw();
+  std::string login;
+  std::string tableName;
+  BatchScanOptions options;
 
-  _AccumuloProxy_nextEntry_args__isset __isset;
+  _AccumuloProxy_createBatchScanner_args__isset __isset;
 
-  void __set_scanner(const std::string& val);
+  void __set_login(const std::string& val);
 
-  bool operator == (const AccumuloProxy_nextEntry_args & rhs) const
+  void __set_tableName(const std::string& val);
+
+  void __set_options(const BatchScanOptions& val);
+
+  bool operator == (const AccumuloProxy_createBatchScanner_args & rhs) const
   {
-    if (!(scanner == rhs.scanner))
+    if (!(login == rhs.login))
+      return false;
+    if (!(tableName == rhs.tableName))
+      return false;
+    if (!(options == rhs.options))
       return false;
     return true;
   }
-  bool operator != (const AccumuloProxy_nextEntry_args &rhs) const {
+  bool operator != (const AccumuloProxy_createBatchScanner_args &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const AccumuloProxy_nextEntry_args & ) const;
+  bool operator < (const AccumuloProxy_createBatchScanner_args & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
@@ -8826,50 +8945,52 @@ class AccumuloProxy_nextEntry_args {
 };
 
 
-class AccumuloProxy_nextEntry_pargs {
+class AccumuloProxy_createBatchScanner_pargs {
  public:
 
 
-  virtual ~AccumuloProxy_nextEntry_pargs() throw();
-  const std::string* scanner;
+  virtual ~AccumuloProxy_createBatchScanner_pargs() throw();
+  const std::string* login;
+  const std::string* tableName;
+  const BatchScanOptions* options;
 
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
 };
 
-typedef struct _AccumuloProxy_nextEntry_result__isset {
-  _AccumuloProxy_nextEntry_result__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
+typedef struct _AccumuloProxy_createBatchScanner_result__isset {
+  _AccumuloProxy_createBatchScanner_result__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
   bool success :1;
   bool ouch1 :1;
   bool ouch2 :1;
   bool ouch3 :1;
-} _AccumuloProxy_nextEntry_result__isset;
+} _AccumuloProxy_createBatchScanner_result__isset;
 
-class AccumuloProxy_nextEntry_result {
+class AccumuloProxy_createBatchScanner_result {
  public:
 
-  AccumuloProxy_nextEntry_result(const AccumuloProxy_nextEntry_result&);
-  AccumuloProxy_nextEntry_result& operator=(const AccumuloProxy_nextEntry_result&);
-  AccumuloProxy_nextEntry_result() {
+  AccumuloProxy_createBatchScanner_result(const AccumuloProxy_createBatchScanner_result&);
+  AccumuloProxy_createBatchScanner_result& operator=(const AccumuloProxy_createBatchScanner_result&);
+  AccumuloProxy_createBatchScanner_result() : success() {
   }
 
-  virtual ~AccumuloProxy_nextEntry_result() throw();
-  KeyValueAndPeek success;
-  NoMoreEntriesException ouch1;
-  UnknownScanner ouch2;
-  AccumuloSecurityException ouch3;
+  virtual ~AccumuloProxy_createBatchScanner_result() throw();
+  std::string success;
+  AccumuloException ouch1;
+  AccumuloSecurityException ouch2;
+  TableNotFoundException ouch3;
 
-  _AccumuloProxy_nextEntry_result__isset __isset;
+  _AccumuloProxy_createBatchScanner_result__isset __isset;
 
-  void __set_success(const KeyValueAndPeek& val);
+  void __set_success(const std::string& val);
 
-  void __set_ouch1(const NoMoreEntriesException& val);
+  void __set_ouch1(const AccumuloException& val);
 
-  void __set_ouch2(const UnknownScanner& val);
+  void __set_ouch2(const AccumuloSecurityException& val);
 
-  void __set_ouch3(const AccumuloSecurityException& val);
+  void __set_ouch3(const TableNotFoundException& val);
 
-  bool operator == (const AccumuloProxy_nextEntry_result & rhs) const
+  bool operator == (const AccumuloProxy_createBatchScanner_result & rhs) const
   {
     if (!(success == rhs.success))
       return false;
@@ -8881,78 +9002,84 @@ class AccumuloProxy_nextEntry_result {
       return false;
     return true;
   }
-  bool operator != (const AccumuloProxy_nextEntry_result &rhs) const {
+  bool operator != (const AccumuloProxy_createBatchScanner_result &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const AccumuloProxy_nextEntry_result & ) const;
+  bool operator < (const AccumuloProxy_createBatchScanner_result & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
 };
 
-typedef struct _AccumuloProxy_nextEntry_presult__isset {
-  _AccumuloProxy_nextEntry_presult__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
+typedef struct _AccumuloProxy_createBatchScanner_presult__isset {
+  _AccumuloProxy_createBatchScanner_presult__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
   bool success :1;
   bool ouch1 :1;
   bool ouch2 :1;
   bool ouch3 :1;
-} _AccumuloProxy_nextEntry_presult__isset;
+} _AccumuloProxy_createBatchScanner_presult__isset;
 
-class AccumuloProxy_nextEntry_presult {
+class AccumuloProxy_createBatchScanner_presult {
  public:
 
 
-  virtual ~AccumuloProxy_nextEntry_presult() throw();
-  KeyValueAndPeek* success;
-  NoMoreEntriesException ouch1;
-  UnknownScanner ouch2;
-  AccumuloSecurityException ouch3;
+  virtual ~AccumuloProxy_createBatchScanner_presult() throw();
+  std::string* success;
+  AccumuloException ouch1;
+  AccumuloSecurityException ouch2;
+  TableNotFoundException ouch3;
 
-  _AccumuloProxy_nextEntry_presult__isset __isset;
+  _AccumuloProxy_createBatchScanner_presult__isset __isset;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
 
 };
 
-typedef struct _AccumuloProxy_nextK_args__isset {
-  _AccumuloProxy_nextK_args__isset() : scanner(false), k(false) {}
-  bool scanner :1;
-  bool k :1;
-} _AccumuloProxy_nextK_args__isset;
+typedef struct _AccumuloProxy_createScanner_args__isset {
+  _AccumuloProxy_createScanner_args__isset() : login(false), tableName(false), options(false) {}
+  bool login :1;
+  bool tableName :1;
+  bool options :1;
+} _AccumuloProxy_createScanner_args__isset;
 
-class AccumuloProxy_nextK_args {
+class AccumuloProxy_createScanner_args {
  public:
 
-  AccumuloProxy_nextK_args(const AccumuloProxy_nextK_args&);
-  AccumuloProxy_nextK_args& operator=(const AccumuloProxy_nextK_args&);
-  AccumuloProxy_nextK_args() : scanner(), k(0) {
+  AccumuloProxy_createScanner_args(const AccumuloProxy_createScanner_args&);
+  AccumuloProxy_createScanner_args& operator=(const AccumuloProxy_createScanner_args&);
+  AccumuloProxy_createScanner_args() : login(), tableName() {
   }
 
-  virtual ~AccumuloProxy_nextK_args() throw();
-  std::string scanner;
-  int32_t k;
+  virtual ~AccumuloProxy_createScanner_args() throw();
+  std::string login;
+  std::string tableName;
+  ScanOptions options;
 
-  _AccumuloProxy_nextK_args__isset __isset;
+  _AccumuloProxy_createScanner_args__isset __isset;
 
-  void __set_scanner(const std::string& val);
+  void __set_login(const std::string& val);
 
-  void __set_k(const int32_t val);
+  void __set_tableName(const std::string& val);
 
-  bool operator == (const AccumuloProxy_nextK_args & rhs) const
+  void __set_options(const ScanOptions& val);
+
+  bool operator == (const AccumuloProxy_createScanner_args & rhs) const
   {
-    if (!(scanner == rhs.scanner))
+    if (!(login == rhs.login))
       return false;
-    if (!(k == rhs.k))
+    if (!(tableName == rhs.tableName))
+      return false;
+    if (!(options == rhs.options))
       return false;
     return true;
   }
-  bool operator != (const AccumuloProxy_nextK_args &rhs) const {
+  bool operator != (const AccumuloProxy_createScanner_args &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const AccumuloProxy_nextK_args & ) const;
+  bool operator < (const AccumuloProxy_createScanner_args & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
@@ -8960,51 +9087,52 @@ class AccumuloProxy_nextK_args {
 };
 
 
-class AccumuloProxy_nextK_pargs {
+class AccumuloProxy_createScanner_pargs {
  public:
 
 
-  virtual ~AccumuloProxy_nextK_pargs() throw();
-  const std::string* scanner;
-  const int32_t* k;
+  virtual ~AccumuloProxy_createScanner_pargs() throw();
+  const std::string* login;
+  const std::string* tableName;
+  const ScanOptions* options;
 
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
 };
 
-typedef struct _AccumuloProxy_nextK_result__isset {
-  _AccumuloProxy_nextK_result__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
+typedef struct _AccumuloProxy_createScanner_result__isset {
+  _AccumuloProxy_createScanner_result__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
   bool success :1;
   bool ouch1 :1;
   bool ouch2 :1;
   bool ouch3 :1;
-} _AccumuloProxy_nextK_result__isset;
+} _AccumuloProxy_createScanner_result__isset;
 
-class AccumuloProxy_nextK_result {
+class AccumuloProxy_createScanner_result {
  public:
 
-  AccumuloProxy_nextK_result(const AccumuloProxy_nextK_result&);
-  AccumuloProxy_nextK_result& operator=(const AccumuloProxy_nextK_result&);
-  AccumuloProxy_nextK_result() {
+  AccumuloProxy_createScanner_result(const AccumuloProxy_createScanner_result&);
+  AccumuloProxy_createScanner_result& operator=(const AccumuloProxy_createScanner_result&);
+  AccumuloProxy_createScanner_result() : success() {
   }
 
-  virtual ~AccumuloProxy_nextK_result() throw();
-  ScanResult success;
-  NoMoreEntriesException ouch1;
-  UnknownScanner ouch2;
-  AccumuloSecurityException ouch3;
+  virtual ~AccumuloProxy_createScanner_result() throw();
+  std::string success;
+  AccumuloException ouch1;
+  AccumuloSecurityException ouch2;
+  TableNotFoundException ouch3;
 
-  _AccumuloProxy_nextK_result__isset __isset;
+  _AccumuloProxy_createScanner_result__isset __isset;
 
-  void __set_success(const ScanResult& val);
+  void __set_success(const std::string& val);
 
-  void __set_ouch1(const NoMoreEntriesException& val);
+  void __set_ouch1(const AccumuloException& val);
 
-  void __set_ouch2(const UnknownScanner& val);
+  void __set_ouch2(const AccumuloSecurityException& val);
 
-  void __set_ouch3(const AccumuloSecurityException& val);
+  void __set_ouch3(const TableNotFoundException& val);
 
-  bool operator == (const AccumuloProxy_nextK_result & rhs) const
+  bool operator == (const AccumuloProxy_createScanner_result & rhs) const
   {
     if (!(success == rhs.success))
       return false;
@@ -9016,72 +9144,2830 @@ class AccumuloProxy_nextK_result {
       return false;
     return true;
   }
-  bool operator != (const AccumuloProxy_nextK_result &rhs) const {
+  bool operator != (const AccumuloProxy_createScanner_result &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const AccumuloProxy_nextK_result & ) const;
+  bool operator < (const AccumuloProxy_createScanner_result & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
 };
 
-typedef struct _AccumuloProxy_nextK_presult__isset {
-  _AccumuloProxy_nextK_presult__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
+typedef struct _AccumuloProxy_createScanner_presult__isset {
+  _AccumuloProxy_createScanner_presult__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
   bool success :1;
   bool ouch1 :1;
   bool ouch2 :1;
   bool ouch3 :1;
-} _AccumuloProxy_nextK_presult__isset;
+} _AccumuloProxy_createScanner_presult__isset;
 
-class AccumuloProxy_nextK_presult {
+class AccumuloProxy_createScanner_presult {
  public:
 
 
-  virtual ~AccumuloProxy_nextK_presult() throw();
-  ScanResult* success;
-  NoMoreEntriesException ouch1;
-  UnknownScanner ouch2;
-  AccumuloSecurityException ouch3;
+  virtual ~AccumuloProxy_createScanner_presult() throw();
+  std::string* success;
+  AccumuloException ouch1;
+  AccumuloSecurityException ouch2;
+  TableNotFoundException ouch3;
 
-  _AccumuloProxy_nextK_presult__isset __isset;
+  _AccumuloProxy_createScanner_presult__isset __isset;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
 
 };
 
-typedef struct _AccumuloProxy_closeScanner_args__isset {
-  _AccumuloProxy_closeScanner_args__isset() : scanner(false) {}
+typedef struct _AccumuloProxy_hasNext_args__isset {
+  _AccumuloProxy_hasNext_args__isset() : scanner(false) {}
   bool scanner :1;
-} _AccumuloProxy_closeScanner_args__isset;
+} _AccumuloProxy_hasNext_args__isset;
+
+class AccumuloProxy_hasNext_args {
+ public:
+
+  AccumuloProxy_hasNext_args(const AccumuloProxy_hasNext_args&);
+  AccumuloProxy_hasNext_args& operator=(const AccumuloProxy_hasNext_args&);
+  AccumuloProxy_hasNext_args() : scanner() {
+  }
+
+  virtual ~AccumuloProxy_hasNext_args() throw();
+  std::string scanner;
+
+  _AccumuloProxy_hasNext_args__isset __isset;
+
+  void __set_scanner(const std::string& val);
+
+  bool operator == (const AccumuloProxy_hasNext_args & rhs) const
+  {
+    if (!(scanner == rhs.scanner))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_hasNext_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_hasNext_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class AccumuloProxy_hasNext_pargs {
+ public:
+
+
+  virtual ~AccumuloProxy_hasNext_pargs() throw();
+  const std::string* scanner;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_hasNext_result__isset {
+  _AccumuloProxy_hasNext_result__isset() : success(false), ouch1(false) {}
+  bool success :1;
+  bool ouch1 :1;
+} _AccumuloProxy_hasNext_result__isset;
+
+class AccumuloProxy_hasNext_result {
+ public:
+
+  AccumuloProxy_hasNext_result(const AccumuloProxy_hasNext_result&);
+  AccumuloProxy_hasNext_result& operator=(const AccumuloProxy_hasNext_result&);
+  AccumuloProxy_hasNext_result() : success(0) {
+  }
+
+  virtual ~AccumuloProxy_hasNext_result() throw();
+  bool success;
+  UnknownScanner ouch1;
+
+  _AccumuloProxy_hasNext_result__isset __isset;
+
+  void __set_success(const bool val);
+
+  void __set_ouch1(const UnknownScanner& val);
+
+  bool operator == (const AccumuloProxy_hasNext_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ouch1 == rhs.ouch1))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_hasNext_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_hasNext_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_hasNext_presult__isset {
+  _AccumuloProxy_hasNext_presult__isset() : success(false), ouch1(false) {}
+  bool success :1;
+  bool ouch1 :1;
+} _AccumuloProxy_hasNext_presult__isset;
+
+class AccumuloProxy_hasNext_presult {
+ public:
+
+
+  virtual ~AccumuloProxy_hasNext_presult() throw();
+  bool* success;
+  UnknownScanner ouch1;
+
+  _AccumuloProxy_hasNext_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+typedef struct _AccumuloProxy_nextEntry_args__isset {
+  _AccumuloProxy_nextEntry_args__isset() : scanner(false) {}
+  bool scanner :1;
+} _AccumuloProxy_nextEntry_args__isset;
+
+class AccumuloProxy_nextEntry_args {
+ public:
+
+  AccumuloProxy_nextEntry_args(const AccumuloProxy_nextEntry_args&);
+  AccumuloProxy_nextEntry_args& operator=(const AccumuloProxy_nextEntry_args&);
+  AccumuloProxy_nextEntry_args() : scanner() {
+  }
+
+  virtual ~AccumuloProxy_nextEntry_args() throw();
+  std::string scanner;
+
+  _AccumuloProxy_nextEntry_args__isset __isset;
+
+  void __set_scanner(const std::string& val);
+
+  bool operator == (const AccumuloProxy_nextEntry_args & rhs) const
+  {
+    if (!(scanner == rhs.scanner))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_nextEntry_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_nextEntry_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class AccumuloProxy_nextEntry_pargs {
+ public:
+
+
+  virtual ~AccumuloProxy_nextEntry_pargs() throw();
+  const std::string* scanner;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_nextEntry_result__isset {
+  _AccumuloProxy_nextEntry_result__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
+  bool success :1;
+  bool ouch1 :1;
+  bool ouch2 :1;
+  bool ouch3 :1;
+} _AccumuloProxy_nextEntry_result__isset;
+
+class AccumuloProxy_nextEntry_result {
+ public:
+
+  AccumuloProxy_nextEntry_result(const AccumuloProxy_nextEntry_result&);
+  AccumuloProxy_nextEntry_result& operator=(const AccumuloProxy_nextEntry_result&);
+  AccumuloProxy_nextEntry_result() {
+  }
+
+  virtual ~AccumuloProxy_nextEntry_result() throw();
+  KeyValueAndPeek success;
+  NoMoreEntriesException ouch1;
+  UnknownScanner ouch2;
+  AccumuloSecurityException ouch3;
+
+  _AccumuloProxy_nextEntry_result__isset __isset;
+
+  void __set_success(const KeyValueAndPeek& val);
+
+  void __set_ouch1(const NoMoreEntriesException& val);
+
+  void __set_ouch2(const UnknownScanner& val);
+
+  void __set_ouch3(const AccumuloSecurityException& val);
+
+  bool operator == (const AccumuloProxy_nextEntry_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ouch1 == rhs.ouch1))
+      return false;
+    if (!(ouch2 == rhs.ouch2))
+      return false;
+    if (!(ouch3 == rhs.ouch3))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_nextEntry_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_nextEntry_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_nextEntry_presult__isset {
+  _AccumuloProxy_nextEntry_presult__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
+  bool success :1;
+  bool ouch1 :1;
+  bool ouch2 :1;
+  bool ouch3 :1;
+} _AccumuloProxy_nextEntry_presult__isset;
+
+class AccumuloProxy_nextEntry_presult {
+ public:
+
+
+  virtual ~AccumuloProxy_nextEntry_presult() throw();
+  KeyValueAndPeek* success;
+  NoMoreEntriesException ouch1;
+  UnknownScanner ouch2;
+  AccumuloSecurityException ouch3;
+
+  _AccumuloProxy_nextEntry_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+typedef struct _AccumuloProxy_nextK_args__isset {
+  _AccumuloProxy_nextK_args__isset() : scanner(false), k(false) {}
+  bool scanner :1;
+  bool k :1;
+} _AccumuloProxy_nextK_args__isset;
+
+class AccumuloProxy_nextK_args {
+ public:
+
+  AccumuloProxy_nextK_args(const AccumuloProxy_nextK_args&);
+  AccumuloProxy_nextK_args& operator=(const AccumuloProxy_nextK_args&);
+  AccumuloProxy_nextK_args() : scanner(), k(0) {
+  }
+
+  virtual ~AccumuloProxy_nextK_args() throw();
+  std::string scanner;
+  int32_t k;
+
+  _AccumuloProxy_nextK_args__isset __isset;
+
+  void __set_scanner(const std::string& val);
+
+  void __set_k(const int32_t val);
+
+  bool operator == (const AccumuloProxy_nextK_args & rhs) const
+  {
+    if (!(scanner == rhs.scanner))
+      return false;
+    if (!(k == rhs.k))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_nextK_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_nextK_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class AccumuloProxy_nextK_pargs {
+ public:
+
+
+  virtual ~AccumuloProxy_nextK_pargs() throw();
+  const std::string* scanner;
+  const int32_t* k;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_nextK_result__isset {
+  _AccumuloProxy_nextK_result__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
+  bool success :1;
+  bool ouch1 :1;
+  bool ouch2 :1;
+  bool ouch3 :1;
+} _AccumuloProxy_nextK_result__isset;
+
+class AccumuloProxy_nextK_result {
+ public:
+
+  AccumuloProxy_nextK_result(const AccumuloProxy_nextK_result&);
+  AccumuloProxy_nextK_result& operator=(const AccumuloProxy_nextK_result&);
+  AccumuloProxy_nextK_result() {
+  }
+
+  virtual ~AccumuloProxy_nextK_result() throw();
+  ScanResult success;
+  NoMoreEntriesException ouch1;
+  UnknownScanner ouch2;
+  AccumuloSecurityException ouch3;
+
+  _AccumuloProxy_nextK_result__isset __isset;
+
+  void __set_success(const ScanResult& val);
+
+  void __set_ouch1(const NoMoreEntriesException& val);
+
+  void __set_ouch2(const UnknownScanner& val);
+
+  void __set_ouch3(const AccumuloSecurityException& val);
+
+  bool operator == (const AccumuloProxy_nextK_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ouch1 == rhs.ouch1))
+      return false;
+    if (!(ouch2 == rhs.ouch2))
+      return false;
+    if (!(ouch3 == rhs.ouch3))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_nextK_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_nextK_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_nextK_presult__isset {
+  _AccumuloProxy_nextK_presult__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
+  bool success :1;
+  bool ouch1 :1;
+  bool ouch2 :1;
+  bool ouch3 :1;
+} _AccumuloProxy_nextK_presult__isset;
+
+class AccumuloProxy_nextK_presult {
+ public:
+
+
+  virtual ~AccumuloProxy_nextK_presult() throw();
+  ScanResult* success;
+  NoMoreEntriesException ouch1;
+  UnknownScanner ouch2;
+  AccumuloSecurityException ouch3;
+
+  _AccumuloProxy_nextK_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+typedef struct _AccumuloProxy_closeScanner_args__isset {
+  _AccumuloProxy_closeScanner_args__isset() : scanner(false) {}
+  bool scanner :1;
+} _AccumuloProxy_closeScanner_args__isset;
+
+class AccumuloProxy_closeScanner_args {
+ public:
+
+  AccumuloProxy_closeScanner_args(const AccumuloProxy_closeScanner_args&);
+  AccumuloProxy_closeScanner_args& operator=(const AccumuloProxy_closeScanner_args&);
+  AccumuloProxy_closeScanner_args() : scanner() {
+  }
+
+  virtual ~AccumuloProxy_closeScanner_args() throw();
+  std::string scanner;
+
+  _AccumuloProxy_closeScanner_args__isset __isset;
+
+  void __set_scanner(const std::string& val);
+
+  bool operator == (const AccumuloProxy_closeScanner_args & rhs) const
+  {
+    if (!(scanner == rhs.scanner))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_closeScanner_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_closeScanner_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class AccumuloProxy_closeScanner_pargs {
+ public:
+
+
+  virtual ~AccumuloProxy_closeScanner_pargs() throw();
+  const std::string* scanner;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_closeScanner_result__isset {
+  _AccumuloProxy_closeScanner_result__isset() : ouch1(false) {}
+  bool ouch1 :1;
+} _AccumuloProxy_closeScanner_result__isset;
+
+class AccumuloProxy_closeScanner_result {
+ public:
+
+  AccumuloProxy_closeScanner_result(const AccumuloProxy_closeScanner_result&);
+  AccumuloProxy_closeScanner_result& operator=(const AccumuloProxy_closeScanner_result&);
+  AccumuloProxy_closeScanner_result() {
+  }
+
+  virtual ~AccumuloProxy_closeScanner_result() throw();
+  UnknownScanner ouch1;
+
+  _AccumuloProxy_closeScanner_result__isset __isset;
+
+  void __set_ouch1(const UnknownScanner& val);
+
+  bool operator == (const AccumuloProxy_closeScanner_result & rhs) const
+  {
+    if (!(ouch1 == rhs.ouch1))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_closeScanner_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_closeScanner_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_closeScanner_presult__isset {
+  _AccumuloProxy_closeScanner_presult__isset() : ouch1(false) {}
+  bool ouch1 :1;
+} _AccumuloProxy_closeScanner_presult__isset;
+
+class AccumuloProxy_closeScanner_presult {
+ public:
+
+
+  virtual ~AccumuloProxy_closeScanner_presult() throw();
+  UnknownScanner ouch1;
+
+  _AccumuloProxy_closeScanner_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+typedef struct _AccumuloProxy_updateAndFlush_args__isset {
+  _AccumuloProxy_updateAndFlush_args__isset() : login(false), tableName(false), cells(false) {}
+  bool login :1;
+  bool tableName :1;
+  bool cells :1;
+} _AccumuloProxy_updateAndFlush_args__isset;
+
+class AccumuloProxy_updateAndFlush_args {
+ public:
+
+  AccumuloProxy_updateAndFlush_args(const AccumuloProxy_updateAndFlush_args&);
+  AccumuloProxy_updateAndFlush_args& operator=(const AccumuloProxy_updateAndFlush_args&);
+  AccumuloProxy_updateAndFlush_args() : login(), tableName() {
+  }
+
+  virtual ~AccumuloProxy_updateAndFlush_args() throw();
+  std::string login;
+  std::string tableName;
+  std::map<std::string, std::vector<ColumnUpdate> >  cells;
+
+  _AccumuloProxy_updateAndFlush_args__isset __isset;
+
+  void __set_login(const std::string& val);
+
+  void __set_tableName(const std::string& val);
+
+  void __set_cells(const std::map<std::string, std::vector<ColumnUpdate> > & val);
+
+  bool operator == (const AccumuloProxy_updateAndFlush_args & rhs) const
+  {
+    if (!(login == rhs.login))
+      return false;
+    if (!(tableName == rhs.tableName))
+      return false;
+    if (!(cells == rhs.cells))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_updateAndFlush_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_updateAndFlush_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class AccumuloProxy_updateAndFlush_pargs {
+ public:
+
+
+  virtual ~AccumuloProxy_updateAndFlush_pargs() throw();
+  const std::string* login;
+  const std::string* tableName;
+  const std::map<std::string, std::vector<ColumnUpdate> > * cells;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_updateAndFlush_result__isset {
+  _AccumuloProxy_updateAndFlush_result__isset() : outch1(false), ouch2(false), ouch3(false), ouch4(false) {}
+  bool outch1 :1;
+  bool ouch2 :1;
+  bool ouch3 :1;
+  bool ouch4 :1;
+} _AccumuloProxy_updateAndFlush_result__isset;
+
+class AccumuloProxy_updateAndFlush_result {
+ public:
+
+  AccumuloProxy_updateAndFlush_result(const AccumuloProxy_updateAndFlush_result&);
+  AccumuloProxy_updateAndFlush_result& operator=(const AccumuloProxy_updateAndFlush_result&);
+  AccumuloProxy_updateAndFlush_result() {
+  }
+
+  virtual ~AccumuloProxy_updateAndFlush_result() throw();
+  AccumuloException outch1;
+  AccumuloSecurityException ouch2;
+  TableNotFoundException ouch3;
+  MutationsRejectedException ouch4;
+
+  _AccumuloProxy_updateAndFlush_result__isset __isset;
+
+  void __set_outch1(const AccumuloException& val);
+
+  void __set_ouch2(const AccumuloSecurityException& val);
+
+  void __set_ouch3(const TableNotFoundException& val);
+
+  void __set_ouch4(const MutationsRejectedException& val);
+
+  bool operator == (const AccumuloProxy_updateAndFlush_result & rhs) const
+  {
+    if (!(outch1 == rhs.outch1))
+      return false;
+    if (!(ouch2 == rhs.ouch2))
+      return false;
+    if (!(ouch3 == rhs.ouch3))
+      return false;
+    if (!(ouch4 == rhs.ouch4))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_updateAndFlush_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_updateAndFlush_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_updateAndFlush_presult__isset {
+  _AccumuloProxy_updateAndFlush_presult__isset() : outch1(false), ouch2(false), ouch3(false), ouch4(false) {}
+  bool outch1 :1;
+  bool ouch2 :1;
+  bool ouch3 :1;
+  bool ouch4 :1;
+} _AccumuloProxy_updateAndFlush_presult__isset;
+
+class AccumuloProxy_updateAndFlush_presult {
+ public:
+
+
+  virtual ~AccumuloProxy_updateAndFlush_presult() throw();
+  AccumuloException outch1;
+  AccumuloSecurityException ouch2;
+  TableNotFoundException ouch3;
+  MutationsRejectedException ouch4;
+
+  _AccumuloProxy_updateAndFlush_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+typedef struct _AccumuloProxy_createWriter_args__isset {
+  _AccumuloProxy_createWriter_args__isset() : login(false), tableName(false), opts(false) {}
+  bool login :1;
+  bool tableName :1;
+  bool opts :1;
+} _AccumuloProxy_createWriter_args__isset;
+
+class AccumuloProxy_createWriter_args {
+ public:
+
+  AccumuloProxy_createWriter_args(const AccumuloProxy_createWriter_args&);
+  AccumuloProxy_createWriter_args& operator=(const AccumuloProxy_createWriter_args&);
+  AccumuloProxy_createWriter_args() : login(), tableName() {
+  }
+
+  virtual ~AccumuloProxy_createWriter_args() throw();
+  std::string login;
+  std::string tableName;
+  WriterOptions opts;
+
+  _AccumuloProxy_createWriter_args__isset __isset;
+
+  void __set_login(const std::string& val);
+
+  void __set_tableName(const std::string& val);
+
+  void __set_opts(const WriterOptions& val);
+
+  bool operator == (const AccumuloProxy_createWriter_args & rhs) const
+  {
+    if (!(login == rhs.login))
+      return false;
+    if (!(tableName == rhs.tableName))
+      return false;
+    if (!(opts == rhs.opts))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_createWriter_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_createWriter_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class AccumuloProxy_createWriter_pargs {
+ public:
+
+
+  virtual ~AccumuloProxy_createWriter_pargs() throw();
+  const std::string* login;
+  const std::string* tableName;
+  const WriterOptions* opts;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_createWriter_result__isset {
+  _AccumuloProxy_createWriter_result__isset() : success(false), outch1(false), ouch2(false), ouch3(false) {}
+  bool success :1;
+  bool outch1 :1;
+  bool ouch2 :1;
+  bool ouch3 :1;
+} _AccumuloProxy_createWriter_result__isset;
+
+class AccumuloProxy_createWriter_result {
+ public:
+
+  AccumuloProxy_createWriter_result(const AccumuloProxy_createWriter_result&);
+  AccumuloProxy_createWriter_result& operator=(const AccumuloProxy_createWriter_result&);
+  AccumuloProxy_createWriter_result() : success() {
+  }
+
+  virtual ~AccumuloProxy_createWriter_result() throw();
+  std::string success;
+  AccumuloException outch1;
+  AccumuloSecurityException ouch2;
+  TableNotFoundException ouch3;
+
+  _AccumuloProxy_createWriter_result__isset __isset;
+
+  void __set_success(const std::string& val);
+
+  void __set_outch1(const AccumuloException& val);
+
+  void __set_ouch2(const AccumuloSecurityException& val);
+
+  void __set_ouch3(const TableNotFoundException& val);
+
+  bool operator == (const AccumuloProxy_createWriter_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(outch1 == rhs.outch1))
+      return false;
+    if (!(ouch2 == rhs.ouch2))
+      return false;
+    if (!(ouch3 == rhs.ouch3))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_createWriter_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_createWriter_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_createWriter_presult__isset {
+  _AccumuloProxy_createWriter_presult__isset() : success(false), outch1(false), ouch2(false), ouch3(false) {}
+  bool success :1;
+  bool outch1 :1;
+  bool ouch2 :1;
+  bool ouch3 :1;
+} _AccumuloProxy_createWriter_presult__isset;
+
+class AccumuloProxy_createWriter_presult {
+ public:
+
+
+  virtual ~AccumuloProxy_createWriter_presult() throw();
+  std::string* success;
+  AccumuloException outch1;
+  AccumuloSecurityException ouch2;
+  TableNotFoundException ouch3;
+
+  _AccumuloProxy_createWriter_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+typedef struct _AccumuloProxy_update_args__isset {
+  _AccumuloProxy_update_args__isset() : writer(false), cells(false) {}
+  bool writer :1;
+  bool cells :1;
+} _AccumuloProxy_update_args__isset;
+
+class AccumuloProxy_update_args {
+ public:
+
+  AccumuloProxy_update_args(const AccumuloProxy_update_args&);
+  AccumuloProxy_update_args& operator=(const AccumuloProxy_update_args&);
+  AccumuloProxy_update_args() : writer() {
+  }
+
+  virtual ~AccumuloProxy_update_args() throw();
+  std::string writer;
+  std::map<std::string, std::vector<ColumnUpdate> >  cells;
+
+  _AccumuloProxy_update_args__isset __isset;
+
+  void __set_writer(const std::string& val);
+
+  void __set_cells(const std::map<std::string, std::vector<ColumnUpdate> > & val);
+
+  bool operator == (const AccumuloProxy_update_args & rhs) const
+  {
+    if (!(writer == rhs.writer))
+      return false;
+    if (!(cells == rhs.cells))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_update_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_update_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class AccumuloProxy_update_pargs {
+ public:
+
+
+  virtual ~AccumuloProxy_update_pargs() throw();
+  const std::string* writer;
+  const std::map<std::string, std::vector<ColumnUpdate> > * cells;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_flush_args__isset {
+  _AccumuloProxy_flush_args__isset() : writer(false) {}
+  bool writer :1;
+} _AccumuloProxy_flush_args__isset;
+
+class AccumuloProxy_flush_args {
+ public:
+
+  AccumuloProxy_flush_args(const AccumuloProxy_flush_args&);
+  AccumuloProxy_flush_args& operator=(const AccumuloProxy_flush_args&);
+  AccumuloProxy_flush_args() : writer() {
+  }
+
+  virtual ~AccumuloProxy_flush_args() throw();
+  std::string writer;
+
+  _AccumuloProxy_flush_args__isset __isset;
+
+  void __set_writer(const std::string& val);
+
+  bool operator == (const AccumuloProxy_flush_args & rhs) const
+  {
+    if (!(writer == rhs.writer))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_flush_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_flush_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class AccumuloProxy_flush_pargs {
+ public:
+
+
+  virtual ~AccumuloProxy_flush_pargs() throw();
+  const std::string* writer;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_flush_result__isset {
+  _AccumuloProxy_flush_result__isset() : ouch1(false), ouch2(false) {}
+  bool ouch1 :1;
+  bool ouch2 :1;
+} _AccumuloProxy_flush_result__isset;
+
+class AccumuloProxy_flush_result {
+ public:
+
+  AccumuloProxy_flush_result(const AccumuloProxy_flush_result&);
+  AccumuloProxy_flush_result& operator=(const AccumuloProxy_flush_result&);
+  AccumuloProxy_flush_result() {
+  }
+
+  virtual ~AccumuloProxy_flush_result() throw();
+  UnknownWriter ouch1;
+  MutationsRejectedException ouch2;
+
+  _AccumuloProxy_flush_result__isset __isset;
+
+  void __set_ouch1(const UnknownWriter& val);
+
+  void __set_ouch2(const MutationsRejectedException& val);
+
+  bool operator == (const AccumuloProxy_flush_result & rhs) const
+  {
+    if (!(ouch1 == rhs.ouch1))
+      return false;
+    if (!(ouch2 == rhs.ouch2))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_flush_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_flush_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_flush_presult__isset {
+  _AccumuloProxy_flush_presult__isset() : ouch1(false), ouch2(false) {}
+  bool ouch1 :1;
+  bool ouch2 :1;
+} _AccumuloProxy_flush_presult__isset;
+
+class AccumuloProxy_flush_presult {
+ public:
+
+
+  virtual ~AccumuloProxy_flush_presult() throw();
+  UnknownWriter ouch1;
+  MutationsRejectedException ouch2;
+
+  _AccumuloProxy_flush_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+typedef struct _AccumuloProxy_closeWriter_args__isset {
+  _AccumuloProxy_closeWriter_args__isset() : writer(false) {}
+  bool writer :1;
+} _AccumuloProxy_closeWriter_args__isset;
+
+class AccumuloProxy_closeWriter_args {
+ public:
+
+  AccumuloProxy_closeWriter_args(const AccumuloProxy_closeWriter_args&);
+  AccumuloProxy_closeWriter_args& operator=(const AccumuloProxy_closeWriter_args&);
+  AccumuloProxy_closeWriter_args() : writer() {
+  }
+
+  virtual ~AccumuloProxy_closeWriter_args() throw();
+  std::string writer;
+
+  _AccumuloProxy_closeWriter_args__isset __isset;
+
+  void __set_writer(const std::string& val);
+
+  bool operator == (const AccumuloProxy_closeWriter_args & rhs) const
+  {
+    if (!(writer == rhs.writer))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_closeWriter_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_closeWriter_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class AccumuloProxy_closeWriter_pargs {
+ public:
+
+
+  virtual ~AccumuloProxy_closeWriter_pargs() throw();
+  const std::string* writer;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_closeWriter_result__isset {
+  _AccumuloProxy_closeWriter_result__isset() : ouch1(false), ouch2(false) {}
+  bool ouch1 :1;
+  bool ouch2 :1;
+} _AccumuloProxy_closeWriter_result__isset;
+
+class AccumuloProxy_closeWriter_result {
+ public:
+
+  AccumuloProxy_closeWriter_result(const AccumuloProxy_closeWriter_result&);
+  AccumuloProxy_closeWriter_result& operator=(const AccumuloProxy_closeWriter_result&);
+  AccumuloProxy_closeWriter_result() {
+  }
+
+  virtual ~AccumuloProxy_closeWriter_result() throw();
+  UnknownWriter ouch1;
+  MutationsRejectedException ouch2;
+
+  _AccumuloProxy_closeWriter_result__isset __isset;
+
+  void __set_ouch1(const UnknownWriter& val);
+
+  void __set_ouch2(const MutationsRejectedException& val);
+
+  bool operator == (const AccumuloProxy_closeWriter_result & rhs) const
+  {
+    if (!(ouch1 == rhs.ouch1))
+      return false;
+    if (!(ouch2 == rhs.ouch2))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_closeWriter_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_closeWriter_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_closeWriter_presult__isset {
+  _AccumuloProxy_closeWriter_presult__isset() : ouch1(false), ouch2(false) {}
+  bool ouch1 :1;
+  bool ouch2 :1;
+} _AccumuloProxy_closeWriter_presult__isset;
+
+class AccumuloProxy_closeWriter_presult {
+ public:
+
+
+  virtual ~AccumuloProxy_closeWriter_presult() throw();
+  UnknownWriter ouch1;
+  MutationsRejectedException ouch2;
+
+  _AccumuloProxy_closeWriter_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+typedef struct _AccumuloProxy_updateRowConditionally_args__isset {
+  _AccumuloProxy_updateRowConditionally_args__isset() : login(false), tableName(false), row(false), updates(false) {}
+  bool login :1;
+  bool tableName :1;
+  bool row :1;
+  bool updates :1;
+} _AccumuloProxy_updateRowConditionally_args__isset;
+
+class AccumuloProxy_updateRowConditionally_args {
+ public:
+
+  AccumuloProxy_updateRowConditionally_args(const AccumuloProxy_updateRowConditionally_args&);
+  AccumuloProxy_updateRowConditionally_args& operator=(const AccumuloProxy_updateRowConditionally_args&);
+  AccumuloProxy_updateRowConditionally_args() : login(), tableName(), row() {
+  }
+
+  virtual ~AccumuloProxy_updateRowConditionally_args() throw();
+  std::string login;
+  std::string tableName;
+  std::string row;
+  ConditionalUpdates updates;
+
+  _AccumuloProxy_updateRowConditionally_args__isset __isset;
+
+  void __set_login(const std::string& val);
+
+  void __set_tableName(const std::string& val);
+
+  void __set_row(const std::string& val);
+
+  void __set_updates(const ConditionalUpdates& val);
+
+  bool operator == (const AccumuloProxy_updateRowConditionally_args & rhs) const
+  {
+    if (!(login == rhs.login))
+      return false;
+    if (!(tableName == rhs.tableName))
+      return false;
+    if (!(row == rhs.row))
+      return false;
+    if (!(updates == rhs.updates))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_updateRowConditionally_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_updateRowConditionally_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class AccumuloProxy_updateRowConditionally_pargs {
+ public:
+
+
+  virtual ~AccumuloProxy_updateRowConditionally_pargs() throw();
+  const std::string* login;
+  const std::string* tableName;
+  const std::string* row;
+  const ConditionalUpdates* updates;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_updateRowConditionally_result__isset {
+  _AccumuloProxy_updateRowConditionally_result__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
+  bool success :1;
+  bool ouch1 :1;
+  bool ouch2 :1;
+  bool ouch3 :1;
+} _AccumuloProxy_updateRowConditionally_result__isset;
+
+class AccumuloProxy_updateRowConditionally_result {
+ public:
+
+  AccumuloProxy_updateRowConditionally_result(const AccumuloProxy_updateRowConditionally_result&);
+  AccumuloProxy_updateRowConditionally_result& operator=(const AccumuloProxy_updateRowConditionally_result&);
+  AccumuloProxy_updateRowConditionally_result() : success((ConditionalStatus::type)0) {
+  }
+
+  virtual ~AccumuloProxy_updateRowConditionally_result() throw();
+  ConditionalStatus::type success;
+  AccumuloException ouch1;
+  AccumuloSecurityException ouch2;
+  TableNotFoundException ouch3;
+
+  _AccumuloProxy_updateRowConditionally_result__isset __isset;
+
+  void __set_success(const ConditionalStatus::type val);
+
+  void __set_ouch1(const AccumuloException& val);
+
+  void __set_ouch2(const AccumuloSecurityException& val);
+
+  void __set_ouch3(const TableNotFoundException& val);
+
+  bool operator == (const AccumuloProxy_updateRowConditionally_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ouch1 == rhs.ouch1))
+      return false;
+    if (!(ouch2 == rhs.ouch2))
+      return false;
+    if (!(ouch3 == rhs.ouch3))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_updateRowConditionally_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_updateRowConditionally_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_updateRowConditionally_presult__isset {
+  _AccumuloProxy_updateRowConditionally_presult__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
+  bool success :1;
+  bool ouch1 :1;
+  bool ouch2 :1;
+  bool ouch3 :1;
+} _AccumuloProxy_updateRowConditionally_presult__isset;
+
+class AccumuloProxy_updateRowConditionally_presult {
+ public:
+
+
+  virtual ~AccumuloProxy_updateRowConditionally_presult() throw();
+  ConditionalStatus::type* success;
+  AccumuloException ouch1;
+  AccumuloSecurityException ouch2;
+  TableNotFoundException ouch3;
+
+  _AccumuloProxy_updateRowConditionally_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+typedef struct _AccumuloProxy_createConditionalWriter_args__isset {
+  _AccumuloProxy_createConditionalWriter_args__isset() : login(false), tableName(false), options(false) {}
+  bool login :1;
+  bool tableName :1;
+  bool options :1;
+} _AccumuloProxy_createConditionalWriter_args__isset;
+
+class AccumuloProxy_createConditionalWriter_args {
+ public:
+
+  AccumuloProxy_createConditionalWriter_args(const AccumuloProxy_createConditionalWriter_args&);
+  AccumuloProxy_createConditionalWriter_args& operator=(const AccumuloProxy_createConditionalWriter_args&);
+  AccumuloProxy_createConditionalWriter_args() : login(), tableName() {
+  }
+
+  virtual ~AccumuloProxy_createConditionalWriter_args() throw();
+  std::string login;
+  std::string tableName;
+  ConditionalWriterOptions options;
+
+  _AccumuloProxy_createConditionalWriter_args__isset __isset;
+
+  void __set_login(const std::string& val);
+
+  void __set_tableName(const std::string& val);
+
+  void __set_options(const ConditionalWriterOptions& val);
+
+  bool operator == (const AccumuloProxy_createConditionalWriter_args & rhs) const
+  {
+    if (!(login == rhs.login))
+      return false;
+    if (!(tableName == rhs.tableName))
+      return false;
+    if (!(options == rhs.options))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_createConditionalWriter_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_createConditionalWriter_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class AccumuloProxy_createConditionalWriter_pargs {
+ public:
+
+
+  virtual ~AccumuloProxy_createConditionalWriter_pargs() throw();
+  const std::string* login;
+  const std::string* tableName;
+  const ConditionalWriterOptions* options;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_createConditionalWriter_result__isset {
+  _AccumuloProxy_createConditionalWriter_result__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
+  bool success :1;
+  bool ouch1 :1;
+  bool ouch2 :1;
+  bool ouch3 :1;
+} _AccumuloProxy_createConditionalWriter_result__isset;
+
+class AccumuloProxy_createConditionalWriter_result {
+ public:
+
+  AccumuloProxy_createConditionalWriter_result(const AccumuloProxy_createConditionalWriter_result&);
+  AccumuloProxy_createConditionalWriter_result& operator=(const AccumuloProxy_createConditionalWriter_result&);
+  AccumuloProxy_createConditionalWriter_result() : success() {
+  }
+
+  virtual ~AccumuloProxy_createConditionalWriter_result() throw();
+  std::string success;
+  AccumuloException ouch1;
+  AccumuloSecurityException ouch2;
+  TableNotFoundException ouch3;
+
+  _AccumuloProxy_createConditionalWriter_result__isset __isset;
+
+  void __set_success(const std::string& val);
+
+  void __set_ouch1(const AccumuloException& val);
+
+  void __set_ouch2(const AccumuloSecurityException& val);
+
+  void __set_ouch3(const TableNotFoundException& val);
+
+  bool operator == (const AccumuloProxy_createConditionalWriter_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ouch1 == rhs.ouch1))
+      return false;
+    if (!(ouch2 == rhs.ouch2))
+      return false;
+    if (!(ouch3 == rhs.ouch3))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_createConditionalWriter_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_createConditionalWriter_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_createConditionalWriter_presult__isset {
+  _AccumuloProxy_createConditionalWriter_presult__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
+  bool success :1;
+  bool ouch1 :1;
+  bool ouch2 :1;
+  bool ouch3 :1;
+} _AccumuloProxy_createConditionalWriter_presult__isset;
+
+class AccumuloProxy_createConditionalWriter_presult {
+ public:
+
+
+  virtual ~AccumuloProxy_createConditionalWriter_presult() throw();
+  std::string* success;
+  AccumuloException ouch1;
+  AccumuloSecurityException ouch2;
+  TableNotFoundException ouch3;
+
+  _AccumuloProxy_createConditionalWriter_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+typedef struct _AccumuloProxy_updateRowsConditionally_args__isset {
+  _AccumuloProxy_updateRowsConditionally_args__isset() : conditionalWriter(false), updates(false) {}
+  bool conditionalWriter :1;
+  bool updates :1;
+} _AccumuloProxy_updateRowsConditionally_args__isset;
+
+class AccumuloProxy_updateRowsConditionally_args {
+ public:
+
+  AccumuloProxy_updateRowsConditionally_args(const AccumuloProxy_updateRowsConditionally_args&);
+  AccumuloProxy_updateRowsConditionally_args& operator=(const AccumuloProxy_updateRowsConditionally_args&);
+  AccumuloProxy_updateRowsConditionally_args() : conditionalWriter() {
+  }
+
+  virtual ~AccumuloProxy_updateRowsConditionally_args() throw();
+  std::string conditionalWriter;
+  std::map<std::string, ConditionalUpdates>  updates;
+
+  _AccumuloProxy_updateRowsConditionally_args__isset __isset;
+
+  void __set_conditionalWriter(const std::string& val);
+
+  void __set_updates(const std::map<std::string, ConditionalUpdates> & val);
+
+  bool operator == (const AccumuloProxy_updateRowsConditionally_args & rhs) const
+  {
+    if (!(conditionalWriter == rhs.conditionalWriter))
+      return false;
+    if (!(updates == rhs.updates))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_updateRowsConditionally_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_updateRowsConditionally_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class AccumuloProxy_updateRowsConditionally_pargs {
+ public:
+
+
+  virtual ~AccumuloProxy_updateRowsConditionally_pargs() throw();
+  const std::string* conditionalWriter;
+  const std::map<std::string, ConditionalUpdates> * updates;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_updateRowsConditionally_result__isset {
+  _AccumuloProxy_updateRowsConditionally_result__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
+  bool success :1;
+  bool ouch1 :1;
+  bool ouch2 :1;
+  bool ouch3 :1;
+} _AccumuloProxy_updateRowsConditionally_result__isset;
+
+class AccumuloProxy_updateRowsConditionally_result {
+ public:
+
+  AccumuloProxy_updateRowsConditionally_result(const AccumuloProxy_updateRowsConditionally_result&);
+  AccumuloProxy_updateRowsConditionally_result& operator=(const AccumuloProxy_updateRowsConditionally_result&);
+  AccumuloProxy_updateRowsConditionally_result() {
+  }
+
+  virtual ~AccumuloProxy_updateRowsConditionally_result() throw();
+  std::map<std::string, ConditionalStatus::type>  success;
+  UnknownWriter ouch1;
+  AccumuloException ouch2;
+  AccumuloSecurityException ouch3;
+
+  _AccumuloProxy_updateRowsConditionally_result__isset __isset;
+
+  void __set_success(const std::map<std::string, ConditionalStatus::type> & val);
+
+  void __set_ouch1(const UnknownWriter& val);
+
+  void __set_ouch2(const AccumuloException& val);
+
+  void __set_ouch3(const AccumuloSecurityException& val);
+
+  bool operator == (const AccumuloProxy_updateRowsConditionally_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ouch1 == rhs.ouch1))
+      return false;
+    if (!(ouch2 == rhs.ouch2))
+      return false;
+    if (!(ouch3 == rhs.ouch3))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_updateRowsConditionally_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_updateRowsConditionally_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _AccumuloProxy_updateRowsConditionally_presult__isset {
+  _AccumuloProxy_updateRowsConditionally_presult__isset() : success(false), ouch1(false), ouch2(false), ouch3(false) {}
+  bool success :1;
+  bool ouch1 :1;
+  bool ouch2 :1;
+  bool ouch3 :1;
+} _AccumuloProxy_updateRowsConditionally_presult__isset;
+
+class AccumuloProxy_updateRowsConditionally_presult {
+ public:
+
+
+  virtual ~AccumuloProxy_updateRowsConditionally_presult() throw();
+  std::map<std::string, ConditionalStatus::type> * success;
+  UnknownWriter ouch1;
+  AccumuloException ouch2;
+  AccumuloSecurityException ouch3;
+
+  _AccumuloProxy_updateRowsConditionally_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+typedef struct _AccumuloProxy_closeConditionalWriter_args__isset {
+  _AccumuloProxy_closeConditionalWriter_args__isset() : conditionalWriter(false) {}
+  bool conditionalWriter :1;
+} _AccumuloProxy_closeConditionalWriter_args__isset;
+
+class AccumuloProxy_closeConditionalWriter_args {
+ public:
+
+  AccumuloProxy_closeConditionalWriter_args(const AccumuloProxy_closeConditionalWriter_args&);
+  AccumuloProxy_closeConditionalWriter_args& operator=(const AccumuloProxy_closeConditionalWriter_args&);
+  AccumuloProxy_closeConditionalWriter_args() : conditionalWriter() {
+  }
+
+  virtual ~AccumuloProxy_closeConditionalWriter_args() throw();
+  std::string conditionalWriter;
+
+  _AccumuloProxy_closeConditionalWriter_args__isset __isset;
+
+  void __set_conditionalWriter(const std::string& val);
+
+  bool operator == (const AccumuloProxy_closeConditionalWriter_args & rhs) const
+  {
+    if (!(conditionalWriter == rhs.conditionalWriter))
+      return false;
+    return true;
+  }
+  bool operator != (const AccumuloProxy_closeConditionalWriter_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const AccumuloProxy_closeConditionalWriter_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class AccumuloProxy_closeConditionalWriter_pargs {
+ public:
+
+
+  virtual ~AccumuloProxy_closeConditionalWriter_pargs() throw();
+  const std::string* conditionalWriter;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class AccumuloProxy_closeConditionalWriter_result {
+ public:
+
+  AccumuloProxy_closeConditionalWriter_result(const AccumuloProxy_closeConditionalWriter_result&);
+  AccumuloProxy_closeConditionalWriter_result& operator=(const AccumuloProxy_closeConditionalWriter_result&);
+  AccumuloProxy_closeConditionalWriter_result() {
+  }
+
+  virtual ~AccumuloProxy_closeConditionalWriter_result() throw();
+
+  bool operator == (const AccumuloProxy_closeConditionalWriter_result & /* rhs */) const
+  {
+    return true;
+  }
+  bool operator != (const AccumuloProxy_closeConditionalWriter_result &rhs) co

<TRUNCATED>

[5/9] accumulo git commit: ACCUMULO-4147 Add Accumulo Namespace Operations to Proxy

Posted by kt...@apache.org.
http://git-wip-us.apache.org/repos/asf/accumulo/blob/8839fe51/proxy/src/main/java/org/apache/accumulo/proxy/thrift/AccumuloProxy.java
----------------------------------------------------------------------
diff --git a/proxy/src/main/java/org/apache/accumulo/proxy/thrift/AccumuloProxy.java b/proxy/src/main/java/org/apache/accumulo/proxy/thrift/AccumuloProxy.java
index 1f4777f..150de3e 100644
--- a/proxy/src/main/java/org/apache/accumulo/proxy/thrift/AccumuloProxy.java
+++ b/proxy/src/main/java/org/apache/accumulo/proxy/thrift/AccumuloProxy.java
@@ -175,6 +175,12 @@ public class AccumuloProxy {
 
     public void revokeTablePermission(ByteBuffer login, String user, String table, TablePermission perm) throws AccumuloException, AccumuloSecurityException, TableNotFoundException, org.apache.thrift.TException;
 
+    public void grantNamespacePermission(ByteBuffer login, String user, String namespaceName, NamespacePermission perm) throws AccumuloException, AccumuloSecurityException, org.apache.thrift.TException;
+
+    public boolean hasNamespacePermission(ByteBuffer login, String user, String namespaceName, NamespacePermission perm) throws AccumuloException, AccumuloSecurityException, org.apache.thrift.TException;
+
+    public void revokeNamespacePermission(ByteBuffer login, String user, String namespaceName, NamespacePermission perm) throws AccumuloException, AccumuloSecurityException, org.apache.thrift.TException;
+
     public String createBatchScanner(ByteBuffer login, String tableName, BatchScanOptions options) throws AccumuloException, AccumuloSecurityException, TableNotFoundException, org.apache.thrift.TException;
 
     public String createScanner(ByteBuffer login, String tableName, ScanOptions options) throws AccumuloException, AccumuloSecurityException, TableNotFoundException, org.apache.thrift.TException;
@@ -209,6 +215,46 @@ public class AccumuloProxy {
 
     public Key getFollowing(Key key, PartialKey part) throws org.apache.thrift.TException;
 
+    public String systemNamespace() throws org.apache.thrift.TException;
+
+    public String defaultNamespace() throws org.apache.thrift.TException;
+
+    public List<String> listNamespaces(ByteBuffer login) throws AccumuloException, AccumuloSecurityException, org.apache.thrift.TException;
+
+    public boolean namespaceExists(ByteBuffer login, String namespaceName) throws AccumuloException, AccumuloSecurityException, org.apache.thrift.TException;
+
+    public void createNamespace(ByteBuffer login, String namespaceName) throws AccumuloException, AccumuloSecurityException, NamespaceExistsException, org.apache.thrift.TException;
+
+    public void deleteNamespace(ByteBuffer login, String namespaceName) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, NamespaceNotEmptyException, org.apache.thrift.TException;
+
+    public void renameNamespace(ByteBuffer login, String oldNamespaceName, String newNamespaceName) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, NamespaceExistsException, org.apache.thrift.TException;
+
+    public void setNamespaceProperty(ByteBuffer login, String namespaceName, String property, String value) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException;
+
+    public void removeNamespaceProperty(ByteBuffer login, String namespaceName, String property) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException;
+
+    public Map<String,String> getNamespaceProperties(ByteBuffer login, String namespaceName) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException;
+
+    public Map<String,String> namespaceIdMap(ByteBuffer login) throws AccumuloException, AccumuloSecurityException, org.apache.thrift.TException;
+
+    public void attachNamespaceIterator(ByteBuffer login, String namespaceName, IteratorSetting setting, Set<IteratorScope> scopes) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException;
+
+    public void removeNamespaceIterator(ByteBuffer login, String namespaceName, String name, Set<IteratorScope> scopes) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException;
+
+    public IteratorSetting getNamespaceIteratorSetting(ByteBuffer login, String namespaceName, String name, IteratorScope scope) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException;
+
+    public Map<String,Set<IteratorScope>> listNamespaceIterators(ByteBuffer login, String namespaceName) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException;
+
+    public void checkNamespaceIteratorConflicts(ByteBuffer login, String namespaceName, IteratorSetting setting, Set<IteratorScope> scopes) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException;
+
+    public int addNamespaceConstraint(ByteBuffer login, String namespaceName, String constraintClassName) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException;
+
+    public void removeNamespaceConstraint(ByteBuffer login, String namespaceName, int id) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException;
+
+    public Map<String,Integer> listNamespaceConstraints(ByteBuffer login, String namespaceName) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException;
+
+    public boolean testNamespaceClassLoad(ByteBuffer login, String namespaceName, String className, String asTypeName) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException;
+
   }
 
   public interface AsyncIface {
@@ -333,6 +379,12 @@ public class AccumuloProxy {
 
     public void revokeTablePermission(ByteBuffer login, String user, String table, TablePermission perm, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
+    public void grantNamespacePermission(ByteBuffer login, String user, String namespaceName, NamespacePermission perm, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void hasNamespacePermission(ByteBuffer login, String user, String namespaceName, NamespacePermission perm, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void revokeNamespacePermission(ByteBuffer login, String user, String namespaceName, NamespacePermission perm, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
     public void createBatchScanner(ByteBuffer login, String tableName, BatchScanOptions options, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void createScanner(ByteBuffer login, String tableName, ScanOptions options, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
@@ -367,6 +419,46 @@ public class AccumuloProxy {
 
     public void getFollowing(Key key, PartialKey part, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
+    public void systemNamespace(org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void defaultNamespace(org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void listNamespaces(ByteBuffer login, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void namespaceExists(ByteBuffer login, String namespaceName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void createNamespace(ByteBuffer login, String namespaceName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void deleteNamespace(ByteBuffer login, String namespaceName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void renameNamespace(ByteBuffer login, String oldNamespaceName, String newNamespaceName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void setNamespaceProperty(ByteBuffer login, String namespaceName, String property, String value, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void removeNamespaceProperty(ByteBuffer login, String namespaceName, String property, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void getNamespaceProperties(ByteBuffer login, String namespaceName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void namespaceIdMap(ByteBuffer login, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void attachNamespaceIterator(ByteBuffer login, String namespaceName, IteratorSetting setting, Set<IteratorScope> scopes, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void removeNamespaceIterator(ByteBuffer login, String namespaceName, String name, Set<IteratorScope> scopes, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void getNamespaceIteratorSetting(ByteBuffer login, String namespaceName, String name, IteratorScope scope, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void listNamespaceIterators(ByteBuffer login, String namespaceName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void checkNamespaceIteratorConflicts(ByteBuffer login, String namespaceName, IteratorSetting setting, Set<IteratorScope> scopes, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void addNamespaceConstraint(ByteBuffer login, String namespaceName, String constraintClassName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void removeNamespaceConstraint(ByteBuffer login, String namespaceName, int id, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void listNamespaceConstraints(ByteBuffer login, String namespaceName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void testNamespaceClassLoad(ByteBuffer login, String namespaceName, String className, String asTypeName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
   }
 
   public static class Client extends org.apache.thrift.TServiceClient implements Iface {
@@ -2235,6 +2327,96 @@ public class AccumuloProxy {
       return;
     }
 
+    public void grantNamespacePermission(ByteBuffer login, String user, String namespaceName, NamespacePermission perm) throws AccumuloException, AccumuloSecurityException, org.apache.thrift.TException
+    {
+      send_grantNamespacePermission(login, user, namespaceName, perm);
+      recv_grantNamespacePermission();
+    }
+
+    public void send_grantNamespacePermission(ByteBuffer login, String user, String namespaceName, NamespacePermission perm) throws org.apache.thrift.TException
+    {
+      grantNamespacePermission_args args = new grantNamespacePermission_args();
+      args.setLogin(login);
+      args.setUser(user);
+      args.setNamespaceName(namespaceName);
+      args.setPerm(perm);
+      sendBase("grantNamespacePermission", args);
+    }
+
+    public void recv_grantNamespacePermission() throws AccumuloException, AccumuloSecurityException, org.apache.thrift.TException
+    {
+      grantNamespacePermission_result result = new grantNamespacePermission_result();
+      receiveBase(result, "grantNamespacePermission");
+      if (result.ouch1 != null) {
+        throw result.ouch1;
+      }
+      if (result.ouch2 != null) {
+        throw result.ouch2;
+      }
+      return;
+    }
+
+    public boolean hasNamespacePermission(ByteBuffer login, String user, String namespaceName, NamespacePermission perm) throws AccumuloException, AccumuloSecurityException, org.apache.thrift.TException
+    {
+      send_hasNamespacePermission(login, user, namespaceName, perm);
+      return recv_hasNamespacePermission();
+    }
+
+    public void send_hasNamespacePermission(ByteBuffer login, String user, String namespaceName, NamespacePermission perm) throws org.apache.thrift.TException
+    {
+      hasNamespacePermission_args args = new hasNamespacePermission_args();
+      args.setLogin(login);
+      args.setUser(user);
+      args.setNamespaceName(namespaceName);
+      args.setPerm(perm);
+      sendBase("hasNamespacePermission", args);
+    }
+
+    public boolean recv_hasNamespacePermission() throws AccumuloException, AccumuloSecurityException, org.apache.thrift.TException
+    {
+      hasNamespacePermission_result result = new hasNamespacePermission_result();
+      receiveBase(result, "hasNamespacePermission");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ouch1 != null) {
+        throw result.ouch1;
+      }
+      if (result.ouch2 != null) {
+        throw result.ouch2;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "hasNamespacePermission failed: unknown result");
+    }
+
+    public void revokeNamespacePermission(ByteBuffer login, String user, String namespaceName, NamespacePermission perm) throws AccumuloException, AccumuloSecurityException, org.apache.thrift.TException
+    {
+      send_revokeNamespacePermission(login, user, namespaceName, perm);
+      recv_revokeNamespacePermission();
+    }
+
+    public void send_revokeNamespacePermission(ByteBuffer login, String user, String namespaceName, NamespacePermission perm) throws org.apache.thrift.TException
+    {
+      revokeNamespacePermission_args args = new revokeNamespacePermission_args();
+      args.setLogin(login);
+      args.setUser(user);
+      args.setNamespaceName(namespaceName);
+      args.setPerm(perm);
+      sendBase("revokeNamespacePermission", args);
+    }
+
+    public void recv_revokeNamespacePermission() throws AccumuloException, AccumuloSecurityException, org.apache.thrift.TException
+    {
+      revokeNamespacePermission_result result = new revokeNamespacePermission_result();
+      receiveBase(result, "revokeNamespacePermission");
+      if (result.ouch1 != null) {
+        throw result.ouch1;
+      }
+      if (result.ouch2 != null) {
+        throw result.ouch2;
+      }
+      return;
+    }
+
     public String createBatchScanner(ByteBuffer login, String tableName, BatchScanOptions options) throws AccumuloException, AccumuloSecurityException, TableNotFoundException, org.apache.thrift.TException
     {
       send_createBatchScanner(login, tableName, options);
@@ -2719,449 +2901,743 @@ public class AccumuloProxy {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getFollowing failed: unknown result");
     }
 
-  }
-  public static class AsyncClient extends org.apache.thrift.async.TAsyncClient implements AsyncIface {
-    public static class Factory implements org.apache.thrift.async.TAsyncClientFactory<AsyncClient> {
-      private org.apache.thrift.async.TAsyncClientManager clientManager;
-      private org.apache.thrift.protocol.TProtocolFactory protocolFactory;
-      public Factory(org.apache.thrift.async.TAsyncClientManager clientManager, org.apache.thrift.protocol.TProtocolFactory protocolFactory) {
-        this.clientManager = clientManager;
-        this.protocolFactory = protocolFactory;
-      }
-      public AsyncClient getAsyncClient(org.apache.thrift.transport.TNonblockingTransport transport) {
-        return new AsyncClient(protocolFactory, clientManager, transport);
-      }
+    public String systemNamespace() throws org.apache.thrift.TException
+    {
+      send_systemNamespace();
+      return recv_systemNamespace();
     }
 
-    public AsyncClient(org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.async.TAsyncClientManager clientManager, org.apache.thrift.transport.TNonblockingTransport transport) {
-      super(protocolFactory, clientManager, transport);
+    public void send_systemNamespace() throws org.apache.thrift.TException
+    {
+      systemNamespace_args args = new systemNamespace_args();
+      sendBase("systemNamespace", args);
     }
 
-    public void login(String principal, Map<String,String> loginProperties, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
-      checkReady();
-      login_call method_call = new login_call(principal, loginProperties, resultHandler, this, ___protocolFactory, ___transport);
-      this.___currentMethod = method_call;
-      ___manager.call(method_call);
+    public String recv_systemNamespace() throws org.apache.thrift.TException
+    {
+      systemNamespace_result result = new systemNamespace_result();
+      receiveBase(result, "systemNamespace");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "systemNamespace failed: unknown result");
     }
 
-    public static class login_call extends org.apache.thrift.async.TAsyncMethodCall {
-      private String principal;
-      private Map<String,String> loginProperties;
-      public login_call(String principal, Map<String,String> loginProperties, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
-        super(client, protocolFactory, transport, resultHandler, false);
-        this.principal = principal;
-        this.loginProperties = loginProperties;
-      }
+    public String defaultNamespace() throws org.apache.thrift.TException
+    {
+      send_defaultNamespace();
+      return recv_defaultNamespace();
+    }
 
-      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("login", org.apache.thrift.protocol.TMessageType.CALL, 0));
-        login_args args = new login_args();
-        args.setPrincipal(principal);
-        args.setLoginProperties(loginProperties);
-        args.write(prot);
-        prot.writeMessageEnd();
-      }
+    public void send_defaultNamespace() throws org.apache.thrift.TException
+    {
+      defaultNamespace_args args = new defaultNamespace_args();
+      sendBase("defaultNamespace", args);
+    }
 
-      public ByteBuffer getResult() throws AccumuloSecurityException, org.apache.thrift.TException {
-        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
-          throw new IllegalStateException("Method call not finished!");
-        }
-        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
-        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
-        return (new Client(prot)).recv_login();
+    public String recv_defaultNamespace() throws org.apache.thrift.TException
+    {
+      defaultNamespace_result result = new defaultNamespace_result();
+      receiveBase(result, "defaultNamespace");
+      if (result.isSetSuccess()) {
+        return result.success;
       }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "defaultNamespace failed: unknown result");
     }
 
-    public void addConstraint(ByteBuffer login, String tableName, String constraintClassName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
-      checkReady();
-      addConstraint_call method_call = new addConstraint_call(login, tableName, constraintClassName, resultHandler, this, ___protocolFactory, ___transport);
-      this.___currentMethod = method_call;
-      ___manager.call(method_call);
+    public List<String> listNamespaces(ByteBuffer login) throws AccumuloException, AccumuloSecurityException, org.apache.thrift.TException
+    {
+      send_listNamespaces(login);
+      return recv_listNamespaces();
     }
 
-    public static class addConstraint_call extends org.apache.thrift.async.TAsyncMethodCall {
-      private ByteBuffer login;
-      private String tableName;
-      private String constraintClassName;
-      public addConstraint_call(ByteBuffer login, String tableName, String constraintClassName, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
-        super(client, protocolFactory, transport, resultHandler, false);
-        this.login = login;
-        this.tableName = tableName;
-        this.constraintClassName = constraintClassName;
-      }
+    public void send_listNamespaces(ByteBuffer login) throws org.apache.thrift.TException
+    {
+      listNamespaces_args args = new listNamespaces_args();
+      args.setLogin(login);
+      sendBase("listNamespaces", args);
+    }
 
-      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("addConstraint", org.apache.thrift.protocol.TMessageType.CALL, 0));
-        addConstraint_args args = new addConstraint_args();
-        args.setLogin(login);
-        args.setTableName(tableName);
-        args.setConstraintClassName(constraintClassName);
-        args.write(prot);
-        prot.writeMessageEnd();
+    public List<String> recv_listNamespaces() throws AccumuloException, AccumuloSecurityException, org.apache.thrift.TException
+    {
+      listNamespaces_result result = new listNamespaces_result();
+      receiveBase(result, "listNamespaces");
+      if (result.isSetSuccess()) {
+        return result.success;
       }
-
-      public int getResult() throws AccumuloException, AccumuloSecurityException, TableNotFoundException, org.apache.thrift.TException {
-        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
-          throw new IllegalStateException("Method call not finished!");
-        }
-        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
-        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
-        return (new Client(prot)).recv_addConstraint();
+      if (result.ouch1 != null) {
+        throw result.ouch1;
       }
+      if (result.ouch2 != null) {
+        throw result.ouch2;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "listNamespaces failed: unknown result");
     }
 
-    public void addSplits(ByteBuffer login, String tableName, Set<ByteBuffer> splits, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
-      checkReady();
-      addSplits_call method_call = new addSplits_call(login, tableName, splits, resultHandler, this, ___protocolFactory, ___transport);
-      this.___currentMethod = method_call;
-      ___manager.call(method_call);
+    public boolean namespaceExists(ByteBuffer login, String namespaceName) throws AccumuloException, AccumuloSecurityException, org.apache.thrift.TException
+    {
+      send_namespaceExists(login, namespaceName);
+      return recv_namespaceExists();
     }
 
-    public static class addSplits_call extends org.apache.thrift.async.TAsyncMethodCall {
-      private ByteBuffer login;
-      private String tableName;
-      private Set<ByteBuffer> splits;
-      public addSplits_call(ByteBuffer login, String tableName, Set<ByteBuffer> splits, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
-        super(client, protocolFactory, transport, resultHandler, false);
-        this.login = login;
-        this.tableName = tableName;
-        this.splits = splits;
-      }
+    public void send_namespaceExists(ByteBuffer login, String namespaceName) throws org.apache.thrift.TException
+    {
+      namespaceExists_args args = new namespaceExists_args();
+      args.setLogin(login);
+      args.setNamespaceName(namespaceName);
+      sendBase("namespaceExists", args);
+    }
 
-      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("addSplits", org.apache.thrift.protocol.TMessageType.CALL, 0));
-        addSplits_args args = new addSplits_args();
-        args.setLogin(login);
-        args.setTableName(tableName);
-        args.setSplits(splits);
-        args.write(prot);
-        prot.writeMessageEnd();
+    public boolean recv_namespaceExists() throws AccumuloException, AccumuloSecurityException, org.apache.thrift.TException
+    {
+      namespaceExists_result result = new namespaceExists_result();
+      receiveBase(result, "namespaceExists");
+      if (result.isSetSuccess()) {
+        return result.success;
       }
-
-      public void getResult() throws AccumuloException, AccumuloSecurityException, TableNotFoundException, org.apache.thrift.TException {
-        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
-          throw new IllegalStateException("Method call not finished!");
-        }
-        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
-        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
-        (new Client(prot)).recv_addSplits();
+      if (result.ouch1 != null) {
+        throw result.ouch1;
+      }
+      if (result.ouch2 != null) {
+        throw result.ouch2;
       }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "namespaceExists failed: unknown result");
     }
 
-    public void attachIterator(ByteBuffer login, String tableName, IteratorSetting setting, Set<IteratorScope> scopes, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
-      checkReady();
-      attachIterator_call method_call = new attachIterator_call(login, tableName, setting, scopes, resultHandler, this, ___protocolFactory, ___transport);
-      this.___currentMethod = method_call;
-      ___manager.call(method_call);
+    public void createNamespace(ByteBuffer login, String namespaceName) throws AccumuloException, AccumuloSecurityException, NamespaceExistsException, org.apache.thrift.TException
+    {
+      send_createNamespace(login, namespaceName);
+      recv_createNamespace();
     }
 
-    public static class attachIterator_call extends org.apache.thrift.async.TAsyncMethodCall {
-      private ByteBuffer login;
-      private String tableName;
-      private IteratorSetting setting;
-      private Set<IteratorScope> scopes;
-      public attachIterator_call(ByteBuffer login, String tableName, IteratorSetting setting, Set<IteratorScope> scopes, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
-        super(client, protocolFactory, transport, resultHandler, false);
-        this.login = login;
-        this.tableName = tableName;
-        this.setting = setting;
-        this.scopes = scopes;
-      }
+    public void send_createNamespace(ByteBuffer login, String namespaceName) throws org.apache.thrift.TException
+    {
+      createNamespace_args args = new createNamespace_args();
+      args.setLogin(login);
+      args.setNamespaceName(namespaceName);
+      sendBase("createNamespace", args);
+    }
 
-      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("attachIterator", org.apache.thrift.protocol.TMessageType.CALL, 0));
-        attachIterator_args args = new attachIterator_args();
-        args.setLogin(login);
-        args.setTableName(tableName);
-        args.setSetting(setting);
-        args.setScopes(scopes);
-        args.write(prot);
-        prot.writeMessageEnd();
+    public void recv_createNamespace() throws AccumuloException, AccumuloSecurityException, NamespaceExistsException, org.apache.thrift.TException
+    {
+      createNamespace_result result = new createNamespace_result();
+      receiveBase(result, "createNamespace");
+      if (result.ouch1 != null) {
+        throw result.ouch1;
       }
-
-      public void getResult() throws AccumuloSecurityException, AccumuloException, TableNotFoundException, org.apache.thrift.TException {
-        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
-          throw new IllegalStateException("Method call not finished!");
-        }
-        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
-        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
-        (new Client(prot)).recv_attachIterator();
+      if (result.ouch2 != null) {
+        throw result.ouch2;
+      }
+      if (result.ouch3 != null) {
+        throw result.ouch3;
       }
+      return;
     }
 
-    public void checkIteratorConflicts(ByteBuffer login, String tableName, IteratorSetting setting, Set<IteratorScope> scopes, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
-      checkReady();
-      checkIteratorConflicts_call method_call = new checkIteratorConflicts_call(login, tableName, setting, scopes, resultHandler, this, ___protocolFactory, ___transport);
-      this.___currentMethod = method_call;
-      ___manager.call(method_call);
+    public void deleteNamespace(ByteBuffer login, String namespaceName) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, NamespaceNotEmptyException, org.apache.thrift.TException
+    {
+      send_deleteNamespace(login, namespaceName);
+      recv_deleteNamespace();
     }
 
-    public static class checkIteratorConflicts_call extends org.apache.thrift.async.TAsyncMethodCall {
-      private ByteBuffer login;
-      private String tableName;
-      private IteratorSetting setting;
-      private Set<IteratorScope> scopes;
-      public checkIteratorConflicts_call(ByteBuffer login, String tableName, IteratorSetting setting, Set<IteratorScope> scopes, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
-        super(client, protocolFactory, transport, resultHandler, false);
-        this.login = login;
-        this.tableName = tableName;
-        this.setting = setting;
-        this.scopes = scopes;
-      }
+    public void send_deleteNamespace(ByteBuffer login, String namespaceName) throws org.apache.thrift.TException
+    {
+      deleteNamespace_args args = new deleteNamespace_args();
+      args.setLogin(login);
+      args.setNamespaceName(namespaceName);
+      sendBase("deleteNamespace", args);
+    }
 
-      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("checkIteratorConflicts", org.apache.thrift.protocol.TMessageType.CALL, 0));
-        checkIteratorConflicts_args args = new checkIteratorConflicts_args();
-        args.setLogin(login);
-        args.setTableName(tableName);
-        args.setSetting(setting);
-        args.setScopes(scopes);
-        args.write(prot);
-        prot.writeMessageEnd();
+    public void recv_deleteNamespace() throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, NamespaceNotEmptyException, org.apache.thrift.TException
+    {
+      deleteNamespace_result result = new deleteNamespace_result();
+      receiveBase(result, "deleteNamespace");
+      if (result.ouch1 != null) {
+        throw result.ouch1;
       }
-
-      public void getResult() throws AccumuloSecurityException, AccumuloException, TableNotFoundException, org.apache.thrift.TException {
-        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
-          throw new IllegalStateException("Method call not finished!");
-        }
-        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
-        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
-        (new Client(prot)).recv_checkIteratorConflicts();
+      if (result.ouch2 != null) {
+        throw result.ouch2;
       }
+      if (result.ouch3 != null) {
+        throw result.ouch3;
+      }
+      if (result.ouch4 != null) {
+        throw result.ouch4;
+      }
+      return;
     }
 
-    public void clearLocatorCache(ByteBuffer login, String tableName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
-      checkReady();
-      clearLocatorCache_call method_call = new clearLocatorCache_call(login, tableName, resultHandler, this, ___protocolFactory, ___transport);
-      this.___currentMethod = method_call;
-      ___manager.call(method_call);
+    public void renameNamespace(ByteBuffer login, String oldNamespaceName, String newNamespaceName) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, NamespaceExistsException, org.apache.thrift.TException
+    {
+      send_renameNamespace(login, oldNamespaceName, newNamespaceName);
+      recv_renameNamespace();
     }
 
-    public static class clearLocatorCache_call extends org.apache.thrift.async.TAsyncMethodCall {
-      private ByteBuffer login;
-      private String tableName;
-      public clearLocatorCache_call(ByteBuffer login, String tableName, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
-        super(client, protocolFactory, transport, resultHandler, false);
-        this.login = login;
-        this.tableName = tableName;
-      }
+    public void send_renameNamespace(ByteBuffer login, String oldNamespaceName, String newNamespaceName) throws org.apache.thrift.TException
+    {
+      renameNamespace_args args = new renameNamespace_args();
+      args.setLogin(login);
+      args.setOldNamespaceName(oldNamespaceName);
+      args.setNewNamespaceName(newNamespaceName);
+      sendBase("renameNamespace", args);
+    }
 
-      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("clearLocatorCache", org.apache.thrift.protocol.TMessageType.CALL, 0));
-        clearLocatorCache_args args = new clearLocatorCache_args();
-        args.setLogin(login);
-        args.setTableName(tableName);
-        args.write(prot);
-        prot.writeMessageEnd();
+    public void recv_renameNamespace() throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, NamespaceExistsException, org.apache.thrift.TException
+    {
+      renameNamespace_result result = new renameNamespace_result();
+      receiveBase(result, "renameNamespace");
+      if (result.ouch1 != null) {
+        throw result.ouch1;
       }
-
-      public void getResult() throws TableNotFoundException, org.apache.thrift.TException {
-        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
-          throw new IllegalStateException("Method call not finished!");
-        }
-        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
-        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
-        (new Client(prot)).recv_clearLocatorCache();
+      if (result.ouch2 != null) {
+        throw result.ouch2;
+      }
+      if (result.ouch3 != null) {
+        throw result.ouch3;
+      }
+      if (result.ouch4 != null) {
+        throw result.ouch4;
       }
+      return;
     }
 
-    public void cloneTable(ByteBuffer login, String tableName, String newTableName, boolean flush, Map<String,String> propertiesToSet, Set<String> propertiesToExclude, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
-      checkReady();
-      cloneTable_call method_call = new cloneTable_call(login, tableName, newTableName, flush, propertiesToSet, propertiesToExclude, resultHandler, this, ___protocolFactory, ___transport);
-      this.___currentMethod = method_call;
-      ___manager.call(method_call);
+    public void setNamespaceProperty(ByteBuffer login, String namespaceName, String property, String value) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      send_setNamespaceProperty(login, namespaceName, property, value);
+      recv_setNamespaceProperty();
     }
 
-    public static class cloneTable_call extends org.apache.thrift.async.TAsyncMethodCall {
-      private ByteBuffer login;
-      private String tableName;
-      private String newTableName;
-      private boolean flush;
-      private Map<String,String> propertiesToSet;
-      private Set<String> propertiesToExclude;
-      public cloneTable_call(ByteBuffer login, String tableName, String newTableName, boolean flush, Map<String,String> propertiesToSet, Set<String> propertiesToExclude, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
-        super(client, protocolFactory, transport, resultHandler, false);
-        this.login = login;
-        this.tableName = tableName;
-        this.newTableName = newTableName;
-        this.flush = flush;
-        this.propertiesToSet = propertiesToSet;
-        this.propertiesToExclude = propertiesToExclude;
-      }
+    public void send_setNamespaceProperty(ByteBuffer login, String namespaceName, String property, String value) throws org.apache.thrift.TException
+    {
+      setNamespaceProperty_args args = new setNamespaceProperty_args();
+      args.setLogin(login);
+      args.setNamespaceName(namespaceName);
+      args.setProperty(property);
+      args.setValue(value);
+      sendBase("setNamespaceProperty", args);
+    }
 
-      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("cloneTable", org.apache.thrift.protocol.TMessageType.CALL, 0));
-        cloneTable_args args = new cloneTable_args();
-        args.setLogin(login);
-        args.setTableName(tableName);
-        args.setNewTableName(newTableName);
-        args.setFlush(flush);
-        args.setPropertiesToSet(propertiesToSet);
-        args.setPropertiesToExclude(propertiesToExclude);
-        args.write(prot);
-        prot.writeMessageEnd();
+    public void recv_setNamespaceProperty() throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      setNamespaceProperty_result result = new setNamespaceProperty_result();
+      receiveBase(result, "setNamespaceProperty");
+      if (result.ouch1 != null) {
+        throw result.ouch1;
       }
-
-      public void getResult() throws AccumuloException, AccumuloSecurityException, TableNotFoundException, TableExistsException, org.apache.thrift.TException {
-        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
-          throw new IllegalStateException("Method call not finished!");
-        }
-        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
-        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
-        (new Client(prot)).recv_cloneTable();
+      if (result.ouch2 != null) {
+        throw result.ouch2;
+      }
+      if (result.ouch3 != null) {
+        throw result.ouch3;
       }
+      return;
     }
 
-    public void compactTable(ByteBuffer login, String tableName, ByteBuffer startRow, ByteBuffer endRow, List<IteratorSetting> iterators, boolean flush, boolean wait, CompactionStrategyConfig compactionStrategy, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
-      checkReady();
-      compactTable_call method_call = new compactTable_call(login, tableName, startRow, endRow, iterators, flush, wait, compactionStrategy, resultHandler, this, ___protocolFactory, ___transport);
-      this.___currentMethod = method_call;
-      ___manager.call(method_call);
+    public void removeNamespaceProperty(ByteBuffer login, String namespaceName, String property) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      send_removeNamespaceProperty(login, namespaceName, property);
+      recv_removeNamespaceProperty();
     }
 
-    public static class compactTable_call extends org.apache.thrift.async.TAsyncMethodCall {
-      private ByteBuffer login;
-      private String tableName;
-      private ByteBuffer startRow;
-      private ByteBuffer endRow;
-      private List<IteratorSetting> iterators;
-      private boolean flush;
-      private boolean wait;
-      private CompactionStrategyConfig compactionStrategy;
-      public compactTable_call(ByteBuffer login, String tableName, ByteBuffer startRow, ByteBuffer endRow, List<IteratorSetting> iterators, boolean flush, boolean wait, CompactionStrategyConfig compactionStrategy, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
-        super(client, protocolFactory, transport, resultHandler, false);
-        this.login = login;
-        this.tableName = tableName;
-        this.startRow = startRow;
-        this.endRow = endRow;
-        this.iterators = iterators;
-        this.flush = flush;
-        this.wait = wait;
-        this.compactionStrategy = compactionStrategy;
-      }
+    public void send_removeNamespaceProperty(ByteBuffer login, String namespaceName, String property) throws org.apache.thrift.TException
+    {
+      removeNamespaceProperty_args args = new removeNamespaceProperty_args();
+      args.setLogin(login);
+      args.setNamespaceName(namespaceName);
+      args.setProperty(property);
+      sendBase("removeNamespaceProperty", args);
+    }
 
-      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("compactTable", org.apache.thrift.protocol.TMessageType.CALL, 0));
-        compactTable_args args = new compactTable_args();
-        args.setLogin(login);
-        args.setTableName(tableName);
-        args.setStartRow(startRow);
-        args.setEndRow(endRow);
-        args.setIterators(iterators);
-        args.setFlush(flush);
-        args.setWait(wait);
-        args.setCompactionStrategy(compactionStrategy);
-        args.write(prot);
-        prot.writeMessageEnd();
+    public void recv_removeNamespaceProperty() throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      removeNamespaceProperty_result result = new removeNamespaceProperty_result();
+      receiveBase(result, "removeNamespaceProperty");
+      if (result.ouch1 != null) {
+        throw result.ouch1;
       }
-
-      public void getResult() throws AccumuloSecurityException, TableNotFoundException, AccumuloException, org.apache.thrift.TException {
-        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
-          throw new IllegalStateException("Method call not finished!");
-        }
-        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
-        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
-        (new Client(prot)).recv_compactTable();
+      if (result.ouch2 != null) {
+        throw result.ouch2;
+      }
+      if (result.ouch3 != null) {
+        throw result.ouch3;
       }
+      return;
     }
 
-    public void cancelCompaction(ByteBuffer login, String tableName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
-      checkReady();
-      cancelCompaction_call method_call = new cancelCompaction_call(login, tableName, resultHandler, this, ___protocolFactory, ___transport);
-      this.___currentMethod = method_call;
-      ___manager.call(method_call);
+    public Map<String,String> getNamespaceProperties(ByteBuffer login, String namespaceName) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      send_getNamespaceProperties(login, namespaceName);
+      return recv_getNamespaceProperties();
     }
 
-    public static class cancelCompaction_call extends org.apache.thrift.async.TAsyncMethodCall {
-      private ByteBuffer login;
-      private String tableName;
-      public cancelCompaction_call(ByteBuffer login, String tableName, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+    public void send_getNamespaceProperties(ByteBuffer login, String namespaceName) throws org.apache.thrift.TException
+    {
+      getNamespaceProperties_args args = new getNamespaceProperties_args();
+      args.setLogin(login);
+      args.setNamespaceName(namespaceName);
+      sendBase("getNamespaceProperties", args);
+    }
+
+    public Map<String,String> recv_getNamespaceProperties() throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      getNamespaceProperties_result result = new getNamespaceProperties_result();
+      receiveBase(result, "getNamespaceProperties");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ouch1 != null) {
+        throw result.ouch1;
+      }
+      if (result.ouch2 != null) {
+        throw result.ouch2;
+      }
+      if (result.ouch3 != null) {
+        throw result.ouch3;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getNamespaceProperties failed: unknown result");
+    }
+
+    public Map<String,String> namespaceIdMap(ByteBuffer login) throws AccumuloException, AccumuloSecurityException, org.apache.thrift.TException
+    {
+      send_namespaceIdMap(login);
+      return recv_namespaceIdMap();
+    }
+
+    public void send_namespaceIdMap(ByteBuffer login) throws org.apache.thrift.TException
+    {
+      namespaceIdMap_args args = new namespaceIdMap_args();
+      args.setLogin(login);
+      sendBase("namespaceIdMap", args);
+    }
+
+    public Map<String,String> recv_namespaceIdMap() throws AccumuloException, AccumuloSecurityException, org.apache.thrift.TException
+    {
+      namespaceIdMap_result result = new namespaceIdMap_result();
+      receiveBase(result, "namespaceIdMap");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ouch1 != null) {
+        throw result.ouch1;
+      }
+      if (result.ouch2 != null) {
+        throw result.ouch2;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "namespaceIdMap failed: unknown result");
+    }
+
+    public void attachNamespaceIterator(ByteBuffer login, String namespaceName, IteratorSetting setting, Set<IteratorScope> scopes) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      send_attachNamespaceIterator(login, namespaceName, setting, scopes);
+      recv_attachNamespaceIterator();
+    }
+
+    public void send_attachNamespaceIterator(ByteBuffer login, String namespaceName, IteratorSetting setting, Set<IteratorScope> scopes) throws org.apache.thrift.TException
+    {
+      attachNamespaceIterator_args args = new attachNamespaceIterator_args();
+      args.setLogin(login);
+      args.setNamespaceName(namespaceName);
+      args.setSetting(setting);
+      args.setScopes(scopes);
+      sendBase("attachNamespaceIterator", args);
+    }
+
+    public void recv_attachNamespaceIterator() throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      attachNamespaceIterator_result result = new attachNamespaceIterator_result();
+      receiveBase(result, "attachNamespaceIterator");
+      if (result.ouch1 != null) {
+        throw result.ouch1;
+      }
+      if (result.ouch2 != null) {
+        throw result.ouch2;
+      }
+      if (result.ouch3 != null) {
+        throw result.ouch3;
+      }
+      return;
+    }
+
+    public void removeNamespaceIterator(ByteBuffer login, String namespaceName, String name, Set<IteratorScope> scopes) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      send_removeNamespaceIterator(login, namespaceName, name, scopes);
+      recv_removeNamespaceIterator();
+    }
+
+    public void send_removeNamespaceIterator(ByteBuffer login, String namespaceName, String name, Set<IteratorScope> scopes) throws org.apache.thrift.TException
+    {
+      removeNamespaceIterator_args args = new removeNamespaceIterator_args();
+      args.setLogin(login);
+      args.setNamespaceName(namespaceName);
+      args.setName(name);
+      args.setScopes(scopes);
+      sendBase("removeNamespaceIterator", args);
+    }
+
+    public void recv_removeNamespaceIterator() throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      removeNamespaceIterator_result result = new removeNamespaceIterator_result();
+      receiveBase(result, "removeNamespaceIterator");
+      if (result.ouch1 != null) {
+        throw result.ouch1;
+      }
+      if (result.ouch2 != null) {
+        throw result.ouch2;
+      }
+      if (result.ouch3 != null) {
+        throw result.ouch3;
+      }
+      return;
+    }
+
+    public IteratorSetting getNamespaceIteratorSetting(ByteBuffer login, String namespaceName, String name, IteratorScope scope) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      send_getNamespaceIteratorSetting(login, namespaceName, name, scope);
+      return recv_getNamespaceIteratorSetting();
+    }
+
+    public void send_getNamespaceIteratorSetting(ByteBuffer login, String namespaceName, String name, IteratorScope scope) throws org.apache.thrift.TException
+    {
+      getNamespaceIteratorSetting_args args = new getNamespaceIteratorSetting_args();
+      args.setLogin(login);
+      args.setNamespaceName(namespaceName);
+      args.setName(name);
+      args.setScope(scope);
+      sendBase("getNamespaceIteratorSetting", args);
+    }
+
+    public IteratorSetting recv_getNamespaceIteratorSetting() throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      getNamespaceIteratorSetting_result result = new getNamespaceIteratorSetting_result();
+      receiveBase(result, "getNamespaceIteratorSetting");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ouch1 != null) {
+        throw result.ouch1;
+      }
+      if (result.ouch2 != null) {
+        throw result.ouch2;
+      }
+      if (result.ouch3 != null) {
+        throw result.ouch3;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getNamespaceIteratorSetting failed: unknown result");
+    }
+
+    public Map<String,Set<IteratorScope>> listNamespaceIterators(ByteBuffer login, String namespaceName) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      send_listNamespaceIterators(login, namespaceName);
+      return recv_listNamespaceIterators();
+    }
+
+    public void send_listNamespaceIterators(ByteBuffer login, String namespaceName) throws org.apache.thrift.TException
+    {
+      listNamespaceIterators_args args = new listNamespaceIterators_args();
+      args.setLogin(login);
+      args.setNamespaceName(namespaceName);
+      sendBase("listNamespaceIterators", args);
+    }
+
+    public Map<String,Set<IteratorScope>> recv_listNamespaceIterators() throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      listNamespaceIterators_result result = new listNamespaceIterators_result();
+      receiveBase(result, "listNamespaceIterators");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ouch1 != null) {
+        throw result.ouch1;
+      }
+      if (result.ouch2 != null) {
+        throw result.ouch2;
+      }
+      if (result.ouch3 != null) {
+        throw result.ouch3;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "listNamespaceIterators failed: unknown result");
+    }
+
+    public void checkNamespaceIteratorConflicts(ByteBuffer login, String namespaceName, IteratorSetting setting, Set<IteratorScope> scopes) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      send_checkNamespaceIteratorConflicts(login, namespaceName, setting, scopes);
+      recv_checkNamespaceIteratorConflicts();
+    }
+
+    public void send_checkNamespaceIteratorConflicts(ByteBuffer login, String namespaceName, IteratorSetting setting, Set<IteratorScope> scopes) throws org.apache.thrift.TException
+    {
+      checkNamespaceIteratorConflicts_args args = new checkNamespaceIteratorConflicts_args();
+      args.setLogin(login);
+      args.setNamespaceName(namespaceName);
+      args.setSetting(setting);
+      args.setScopes(scopes);
+      sendBase("checkNamespaceIteratorConflicts", args);
+    }
+
+    public void recv_checkNamespaceIteratorConflicts() throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      checkNamespaceIteratorConflicts_result result = new checkNamespaceIteratorConflicts_result();
+      receiveBase(result, "checkNamespaceIteratorConflicts");
+      if (result.ouch1 != null) {
+        throw result.ouch1;
+      }
+      if (result.ouch2 != null) {
+        throw result.ouch2;
+      }
+      if (result.ouch3 != null) {
+        throw result.ouch3;
+      }
+      return;
+    }
+
+    public int addNamespaceConstraint(ByteBuffer login, String namespaceName, String constraintClassName) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      send_addNamespaceConstraint(login, namespaceName, constraintClassName);
+      return recv_addNamespaceConstraint();
+    }
+
+    public void send_addNamespaceConstraint(ByteBuffer login, String namespaceName, String constraintClassName) throws org.apache.thrift.TException
+    {
+      addNamespaceConstraint_args args = new addNamespaceConstraint_args();
+      args.setLogin(login);
+      args.setNamespaceName(namespaceName);
+      args.setConstraintClassName(constraintClassName);
+      sendBase("addNamespaceConstraint", args);
+    }
+
+    public int recv_addNamespaceConstraint() throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      addNamespaceConstraint_result result = new addNamespaceConstraint_result();
+      receiveBase(result, "addNamespaceConstraint");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ouch1 != null) {
+        throw result.ouch1;
+      }
+      if (result.ouch2 != null) {
+        throw result.ouch2;
+      }
+      if (result.ouch3 != null) {
+        throw result.ouch3;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "addNamespaceConstraint failed: unknown result");
+    }
+
+    public void removeNamespaceConstraint(ByteBuffer login, String namespaceName, int id) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      send_removeNamespaceConstraint(login, namespaceName, id);
+      recv_removeNamespaceConstraint();
+    }
+
+    public void send_removeNamespaceConstraint(ByteBuffer login, String namespaceName, int id) throws org.apache.thrift.TException
+    {
+      removeNamespaceConstraint_args args = new removeNamespaceConstraint_args();
+      args.setLogin(login);
+      args.setNamespaceName(namespaceName);
+      args.setId(id);
+      sendBase("removeNamespaceConstraint", args);
+    }
+
+    public void recv_removeNamespaceConstraint() throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      removeNamespaceConstraint_result result = new removeNamespaceConstraint_result();
+      receiveBase(result, "removeNamespaceConstraint");
+      if (result.ouch1 != null) {
+        throw result.ouch1;
+      }
+      if (result.ouch2 != null) {
+        throw result.ouch2;
+      }
+      if (result.ouch3 != null) {
+        throw result.ouch3;
+      }
+      return;
+    }
+
+    public Map<String,Integer> listNamespaceConstraints(ByteBuffer login, String namespaceName) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      send_listNamespaceConstraints(login, namespaceName);
+      return recv_listNamespaceConstraints();
+    }
+
+    public void send_listNamespaceConstraints(ByteBuffer login, String namespaceName) throws org.apache.thrift.TException
+    {
+      listNamespaceConstraints_args args = new listNamespaceConstraints_args();
+      args.setLogin(login);
+      args.setNamespaceName(namespaceName);
+      sendBase("listNamespaceConstraints", args);
+    }
+
+    public Map<String,Integer> recv_listNamespaceConstraints() throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      listNamespaceConstraints_result result = new listNamespaceConstraints_result();
+      receiveBase(result, "listNamespaceConstraints");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ouch1 != null) {
+        throw result.ouch1;
+      }
+      if (result.ouch2 != null) {
+        throw result.ouch2;
+      }
+      if (result.ouch3 != null) {
+        throw result.ouch3;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "listNamespaceConstraints failed: unknown result");
+    }
+
+    public boolean testNamespaceClassLoad(ByteBuffer login, String namespaceName, String className, String asTypeName) throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      send_testNamespaceClassLoad(login, namespaceName, className, asTypeName);
+      return recv_testNamespaceClassLoad();
+    }
+
+    public void send_testNamespaceClassLoad(ByteBuffer login, String namespaceName, String className, String asTypeName) throws org.apache.thrift.TException
+    {
+      testNamespaceClassLoad_args args = new testNamespaceClassLoad_args();
+      args.setLogin(login);
+      args.setNamespaceName(namespaceName);
+      args.setClassName(className);
+      args.setAsTypeName(asTypeName);
+      sendBase("testNamespaceClassLoad", args);
+    }
+
+    public boolean recv_testNamespaceClassLoad() throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException, org.apache.thrift.TException
+    {
+      testNamespaceClassLoad_result result = new testNamespaceClassLoad_result();
+      receiveBase(result, "testNamespaceClassLoad");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ouch1 != null) {
+        throw result.ouch1;
+      }
+      if (result.ouch2 != null) {
+        throw result.ouch2;
+      }
+      if (result.ouch3 != null) {
+        throw result.ouch3;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "testNamespaceClassLoad failed: unknown result");
+    }
+
+  }
+  public static class AsyncClient extends org.apache.thrift.async.TAsyncClient implements AsyncIface {
+    public static class Factory implements org.apache.thrift.async.TAsyncClientFactory<AsyncClient> {
+      private org.apache.thrift.async.TAsyncClientManager clientManager;
+      private org.apache.thrift.protocol.TProtocolFactory protocolFactory;
+      public Factory(org.apache.thrift.async.TAsyncClientManager clientManager, org.apache.thrift.protocol.TProtocolFactory protocolFactory) {
+        this.clientManager = clientManager;
+        this.protocolFactory = protocolFactory;
+      }
+      public AsyncClient getAsyncClient(org.apache.thrift.transport.TNonblockingTransport transport) {
+        return new AsyncClient(protocolFactory, clientManager, transport);
+      }
+    }
+
+    public AsyncClient(org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.async.TAsyncClientManager clientManager, org.apache.thrift.transport.TNonblockingTransport transport) {
+      super(protocolFactory, clientManager, transport);
+    }
+
+    public void login(String principal, Map<String,String> loginProperties, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      login_call method_call = new login_call(principal, loginProperties, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class login_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String principal;
+      private Map<String,String> loginProperties;
+      public login_call(String principal, Map<String,String> loginProperties, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
-        this.login = login;
-        this.tableName = tableName;
+        this.principal = principal;
+        this.loginProperties = loginProperties;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("cancelCompaction", org.apache.thrift.protocol.TMessageType.CALL, 0));
-        cancelCompaction_args args = new cancelCompaction_args();
-        args.setLogin(login);
-        args.setTableName(tableName);
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("login", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        login_args args = new login_args();
+        args.setPrincipal(principal);
+        args.setLoginProperties(loginProperties);
         args.write(prot);
         prot.writeMessageEnd();
       }
 
-      public void getResult() throws AccumuloSecurityException, TableNotFoundException, AccumuloException, org.apache.thrift.TException {
+      public ByteBuffer getResult() throws AccumuloSecurityException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
         org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
         org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
-        (new Client(prot)).recv_cancelCompaction();
+        return (new Client(prot)).recv_login();
       }
     }
 
-    public void createTable(ByteBuffer login, String tableName, boolean versioningIter, TimeType type, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void addConstraint(ByteBuffer login, String tableName, String constraintClassName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      createTable_call method_call = new createTable_call(login, tableName, versioningIter, type, resultHandler, this, ___protocolFactory, ___transport);
+      addConstraint_call method_call = new addConstraint_call(login, tableName, constraintClassName, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
-    public static class createTable_call extends org.apache.thrift.async.TAsyncMethodCall {
+    public static class addConstraint_call extends org.apache.thrift.async.TAsyncMethodCall {
       private ByteBuffer login;
       private String tableName;
-      private boolean versioningIter;
-      private TimeType type;
-      public createTable_call(ByteBuffer login, String tableName, boolean versioningIter, TimeType type, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      private String constraintClassName;
+      public addConstraint_call(ByteBuffer login, String tableName, String constraintClassName, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.login = login;
         this.tableName = tableName;
-        this.versioningIter = versioningIter;
-        this.type = type;
+        this.constraintClassName = constraintClassName;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("createTable", org.apache.thrift.protocol.TMessageType.CALL, 0));
-        createTable_args args = new createTable_args();
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("addConstraint", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        addConstraint_args args = new addConstraint_args();
         args.setLogin(login);
         args.setTableName(tableName);
-        args.setVersioningIter(versioningIter);
-        args.setType(type);
+        args.setConstraintClassName(constraintClassName);
         args.write(prot);
         prot.writeMessageEnd();
       }
 
-      public void getResult() throws AccumuloException, AccumuloSecurityException, TableExistsException, org.apache.thrift.TException {
+      public int getResult() throws AccumuloException, AccumuloSecurityException, TableNotFoundException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
         org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
         org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
-        (new Client(prot)).recv_createTable();
+        return (new Client(prot)).recv_addConstraint();
       }
     }
 
-    public void deleteTable(ByteBuffer login, String tableName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void addSplits(ByteBuffer login, String tableName, Set<ByteBuffer> splits, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      deleteTable_call method_call = new deleteTable_call(login, tableName, resultHandler, this, ___protocolFactory, ___transport);
+      addSplits_call method_call = new addSplits_call(login, tableName, splits, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
-    public static class deleteTable_call extends org.apache.thrift.async.TAsyncMethodCall {
+    public static class addSplits_call extends org.apache.thrift.async.TAsyncMethodCall {
       private ByteBuffer login;
       private String tableName;
-      public deleteTable_call(ByteBuffer login, String tableName, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      private Set<ByteBuffer> splits;
+      public addSplits_call(ByteBuffer login, String tableName, Set<ByteBuffer> splits, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.login = login;
         this.tableName = tableName;
+        this.splits = splits;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("deleteTable", org.apache.thrift.protocol.TMessageType.CALL, 0));
-        deleteTable_args args = new deleteTable_args();
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("addSplits", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        addSplits_args args = new addSplits_args();
         args.setLogin(login);
         args.setTableName(tableName);
+        args.setSplits(splits);
         args.write(prot);
         prot.writeMessageEnd();
       }
@@ -3172,268 +3648,596 @@ public class AccumuloProxy {
         }
         org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
         org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
-        (new Client(prot)).recv_deleteTable();
+        (new Client(prot)).recv_addSplits();
       }
     }
 
-    public void deleteRows(ByteBuffer login, String tableName, ByteBuffer startRow, ByteBuffer endRow, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void attachIterator(ByteBuffer login, String tableName, IteratorSetting setting, Set<IteratorScope> scopes, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      deleteRows_call method_call = new deleteRows_call(login, tableName, startRow, endRow, resultHandler, this, ___protocolFactory, ___transport);
+      attachIterator_call method_call = new attachIterator_call(login, tableName, setting, scopes, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
-    public static class deleteRows_call extends org.apache.thrift.async.TAsyncMethodCall {
+    public static class attachIterator_call extends org.apache.thrift.async.TAsyncMethodCall {
       private ByteBuffer login;
       private String tableName;
-      private ByteBuffer startRow;
-      private ByteBuffer endRow;
-      public deleteRows_call(ByteBuffer login, String tableName, ByteBuffer startRow, ByteBuffer endRow, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      private IteratorSetting setting;
+      private Set<IteratorScope> scopes;
+      public attachIterator_call(ByteBuffer login, String tableName, IteratorSetting setting, Set<IteratorScope> scopes, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.login = login;
         this.tableName = tableName;
-        this.startRow = startRow;
-        this.endRow = endRow;
+        this.setting = setting;
+        this.scopes = scopes;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("deleteRows", org.apache.thrift.protocol.TMessageType.CALL, 0));
-        deleteRows_args args = new deleteRows_args();
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("attachIterator", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        attachIterator_args args = new attachIterator_args();
         args.setLogin(login);
         args.setTableName(tableName);
-        args.setStartRow(startRow);
-        args.setEndRow(endRow);
+        args.setSetting(setting);
+        args.setScopes(scopes);
         args.write(prot);
         prot.writeMessageEnd();
       }
 
-      public void getResult() throws AccumuloException, AccumuloSecurityException, TableNotFoundException, org.apache.thrift.TException {
+      public void getResult() throws AccumuloSecurityException, AccumuloException, TableNotFoundException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
         org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
         org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
-        (new Client(prot)).recv_deleteRows();
+        (new Client(prot)).recv_attachIterator();
       }
     }
 
-    public void exportTable(ByteBuffer login, String tableName, String exportDir, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void checkIteratorConflicts(ByteBuffer login, String tableName, IteratorSetting setting, Set<IteratorScope> scopes, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      exportTable_call method_call = new exportTable_call(login, tableName, exportDir, resultHandler, this, ___protocolFactory, ___transport);
+      checkIteratorConflicts_call method_call = new checkIteratorConflicts_call(login, tableName, setting, scopes, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
-    public static class exportTable_call extends org.apache.thrift.async.TAsyncMethodCall {
+    public static class checkIteratorConflicts_call extends org.apache.thrift.async.TAsyncMethodCall {
       private ByteBuffer login;
       private String tableName;
-      private String exportDir;
-      public exportTable_call(ByteBuffer login, String tableName, String exportDir, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      private IteratorSetting setting;
+      private Set<IteratorScope> scopes;
+      public checkIteratorConflicts_call(ByteBuffer login, String tableName, IteratorSetting setting, Set<IteratorScope> scopes, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.login = login;
         this.tableName = tableName;
-        this.exportDir = exportDir;
+        this.setting = setting;
+        this.scopes = scopes;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("exportTable", org.apache.thrift.protocol.TMessageType.CALL, 0));
-        exportTable_args args = new exportTable_args();
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("checkIteratorConflicts", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        checkIteratorConflicts_args args = new checkIteratorConflicts_args();
         args.setLogin(login);
         args.setTableName(tableName);
-        args.setExportDir(exportDir);
+        args.setSetting(setting);
+        args.setScopes(scopes);
         args.write(prot);
         prot.writeMessageEnd();
       }
 
-      public void getResult() throws AccumuloException, AccumuloSecurityException, TableNotFoundException, org.apache.thrift.TException {
+      public void getResult() throws AccumuloSecurityException, AccumuloException, TableNotFoundException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
         org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
         org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
-        (new Client(prot)).recv_exportTable();
+        (new Client(prot)).recv_checkIteratorConflicts();
       }
     }
 
-    public void flushTable(ByteBuffer login, String tableName, ByteBuffer startRow, ByteBuffer endRow, boolean wait, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void clearLocatorCache(ByteBuffer login, String tableName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      flushTable_call method_call = new flushTable_call(login, tableName, startRow, endRow, wait, resultHandler, this, ___protocolFactory, ___transport);
+      clearLocatorCache_call method_call = new clearLocatorCache_call(login, tableName, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
-    public static class flushTable_call extends org.apache.thrift.async.TAsyncMethodCall {
+    public static class clearLocatorCache_call extends org.apache.thrift.async.TAsyncMethodCall {
       private ByteBuffer login;
       private String tableName;
-      private ByteBuffer startRow;
-      private ByteBuffer endRow;
-      private boolean wait;
-      public flushTable_call(ByteBuffer login, String tableName, ByteBuffer startRow, ByteBuffer endRow, boolean wait, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      public clearLocatorCache_call(ByteBuffer login, String tableName, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.login = login;
         this.tableName = tableName;
-        this.startRow = startRow;
-        this.endRow = endRow;
-        this.wait = wait;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("flushTable", org.apache.thrift.protocol.TMessageType.CALL, 0));
-        flushTable_args args = new flushTable_args();
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("clearLocatorCache", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        clearLocatorCache_args args = new clearLocatorCache_args();
         args.setLogin(login);
         args.setTableName(tableName);
-        args.setStartRow(startRow);
-        args.setEndRow(endRow);
-        args.setWait(wait);
         args.write(prot);
         prot.writeMessageEnd();
       }
 
-      public void getResult() throws AccumuloException, AccumuloSecurityException, TableNotFoundException, org.apache.thrift.TException {
+      public void getResult() throws TableNotFoundException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
         org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
         org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
-        (new Client(prot)).recv_flushTable();
+        (new Client(prot)).recv_clearLocatorCache();
       }
     }
 
-    public void getDiskUsage(ByteBuffer login, Set<String> tables, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void cloneTable(ByteBuffer login, String tableName, String newTableName, boolean flush, Map<String,String> propertiesToSet, Set<String> propertiesToExclude, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      getDiskUsage_call method_call = new getDiskUsage_call(login, tables, resultHandler, this, ___protocolFactory, ___transport);
+      cloneTable_call method_call = new cloneTable_call(login, tableName, newTableName, flush, propertiesToSet, propertiesToExclude, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
-    public static class getDiskUsage_call extends org.apache.thrift.async.TAsyncMethodCall {
+    public static class cloneTable_call extends org.apache.thrift.async.TAsyncMethodCall {
       private ByteBuffer login;
-      private Set<String> tables;
-      public getDiskUsage_call(ByteBuffer login, Set<String> tables, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      private String tableName;
+      private String newTableName;
+      private boolean flush;
+      private Map<String,String> propertiesToSet;
+      private Set<String> propertiesToExclude;
+      public cloneTable_call(ByteBuffer login, String tableName, String newTableName, boolean flush, Map<String,String> propertiesToSet, Set<String> propertiesToExclude, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.login = login;
-        this.tables = tables;
+        this.tableName = tableName;
+        this.newTableName = newTableName;
+        this.flush = flush;
+        this.propertiesToSet = propertiesToSet;
+        this.propertiesToExclude = propertiesToExclude;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getDiskUsage", org.apache.thrift.protocol.TMessageType.CALL, 0));
-        getDiskUsage_args args = new getDiskUsage_args();
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("cloneTable", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        cloneTable_args args = new cloneTable_args();
         args.setLogin(login);
-        args.setTables(tables);
+        args.setTableName(tableName);
+        args.setNewTableName(newTableName);
+        args.setFlush(flush);
+        args.setPropertiesToSet(propertiesToSet);
+        args.setPropertiesToExclude(propertiesToExclude);
         args.write(prot);
         prot.writeMessageEnd();
       }
 
-      public List<DiskUsage> getResult() throws AccumuloException, AccumuloSecurityException, TableNotFoundException, org.apache.thrift.TException {
+      public void getResult() throws AccumuloException, AccumuloSecurityException, TableNotFoundException, TableExistsException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
         org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(

<TRUNCATED>

[2/9] accumulo git commit: ACCUMULO-4147 Add Accumulo Namespace Operations to Proxy

Posted by kt...@apache.org.
http://git-wip-us.apache.org/repos/asf/accumulo/blob/8839fe51/proxy/src/main/python/ttypes.py
----------------------------------------------------------------------
diff --git a/proxy/src/main/python/ttypes.py b/proxy/src/main/python/ttypes.py
index c224c50..87a977d 100644
--- a/proxy/src/main/python/ttypes.py
+++ b/proxy/src/main/python/ttypes.py
@@ -114,6 +114,41 @@ class SystemPermission:
     "SYSTEM": 7,
   }
 
+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
@@ -3126,3 +3161,207 @@ class MutationsRejectedException(TException):
 
   def __ne__(self, other):
     return not (self == other)
+
+class NamespaceExistsException(TException):
+  """
+  Attributes:
+   - msg
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'msg', None, None, ), # 1
+  )
+
+  def __init__(self, msg=None,):
+    self.msg = msg
+
+  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.msg = 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('NamespaceExistsException')
+    if self.msg is not None:
+      oprot.writeFieldBegin('msg', TType.STRING, 1)
+      oprot.writeString(self.msg)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.msg)
+    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 NamespaceNotFoundException(TException):
+  """
+  Attributes:
+   - msg
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'msg', None, None, ), # 1
+  )
+
+  def __init__(self, msg=None,):
+    self.msg = msg
+
+  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.msg = 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('NamespaceNotFoundException')
+    if self.msg is not None:
+      oprot.writeFieldBegin('msg', TType.STRING, 1)
+      oprot.writeString(self.msg)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.msg)
+    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 NamespaceNotEmptyException(TException):
+  """
+  Attributes:
+   - msg
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'msg', None, None, ), # 1
+  )
+
+  def __init__(self, msg=None,):
+    self.msg = msg
+
+  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.msg = 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('NamespaceNotEmptyException')
+    if self.msg is not None:
+      oprot.writeFieldBegin('msg', TType.STRING, 1)
+      oprot.writeString(self.msg)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.msg)
+    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)

http://git-wip-us.apache.org/repos/asf/accumulo/blob/8839fe51/proxy/src/main/ruby/accumulo_proxy.rb
----------------------------------------------------------------------
diff --git a/proxy/src/main/ruby/accumulo_proxy.rb b/proxy/src/main/ruby/accumulo_proxy.rb
index 38a1a23..e02ba16 100644
--- a/proxy/src/main/ruby/accumulo_proxy.rb
+++ b/proxy/src/main/ruby/accumulo_proxy.rb
@@ -1041,6 +1041,55 @@ module Accumulo
         return
       end
 
+      def grantNamespacePermission(login, user, namespaceName, perm)
+        send_grantNamespacePermission(login, user, namespaceName, perm)
+        recv_grantNamespacePermission()
+      end
+
+      def send_grantNamespacePermission(login, user, namespaceName, perm)
+        send_message('grantNamespacePermission', GrantNamespacePermission_args, :login => login, :user => user, :namespaceName => namespaceName, :perm => perm)
+      end
+
+      def recv_grantNamespacePermission()
+        result = receive_message(GrantNamespacePermission_result)
+        raise result.ouch1 unless result.ouch1.nil?
+        raise result.ouch2 unless result.ouch2.nil?
+        return
+      end
+
+      def hasNamespacePermission(login, user, namespaceName, perm)
+        send_hasNamespacePermission(login, user, namespaceName, perm)
+        return recv_hasNamespacePermission()
+      end
+
+      def send_hasNamespacePermission(login, user, namespaceName, perm)
+        send_message('hasNamespacePermission', HasNamespacePermission_args, :login => login, :user => user, :namespaceName => namespaceName, :perm => perm)
+      end
+
+      def recv_hasNamespacePermission()
+        result = receive_message(HasNamespacePermission_result)
+        return result.success unless result.success.nil?
+        raise result.ouch1 unless result.ouch1.nil?
+        raise result.ouch2 unless result.ouch2.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'hasNamespacePermission failed: unknown result')
+      end
+
+      def revokeNamespacePermission(login, user, namespaceName, perm)
+        send_revokeNamespacePermission(login, user, namespaceName, perm)
+        recv_revokeNamespacePermission()
+      end
+
+      def send_revokeNamespacePermission(login, user, namespaceName, perm)
+        send_message('revokeNamespacePermission', RevokeNamespacePermission_args, :login => login, :user => user, :namespaceName => namespaceName, :perm => perm)
+      end
+
+      def recv_revokeNamespacePermission()
+        result = receive_message(RevokeNamespacePermission_result)
+        raise result.ouch1 unless result.ouch1.nil?
+        raise result.ouch2 unless result.ouch2.nil?
+        return
+      end
+
       def createBatchScanner(login, tableName, options)
         send_createBatchScanner(login, tableName, options)
         return recv_createBatchScanner()
@@ -1317,6 +1366,350 @@ module Accumulo
         raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'getFollowing failed: unknown result')
       end
 
+      def systemNamespace()
+        send_systemNamespace()
+        return recv_systemNamespace()
+      end
+
+      def send_systemNamespace()
+        send_message('systemNamespace', SystemNamespace_args)
+      end
+
+      def recv_systemNamespace()
+        result = receive_message(SystemNamespace_result)
+        return result.success unless result.success.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'systemNamespace failed: unknown result')
+      end
+
+      def defaultNamespace()
+        send_defaultNamespace()
+        return recv_defaultNamespace()
+      end
+
+      def send_defaultNamespace()
+        send_message('defaultNamespace', DefaultNamespace_args)
+      end
+
+      def recv_defaultNamespace()
+        result = receive_message(DefaultNamespace_result)
+        return result.success unless result.success.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'defaultNamespace failed: unknown result')
+      end
+
+      def listNamespaces(login)
+        send_listNamespaces(login)
+        return recv_listNamespaces()
+      end
+
+      def send_listNamespaces(login)
+        send_message('listNamespaces', ListNamespaces_args, :login => login)
+      end
+
+      def recv_listNamespaces()
+        result = receive_message(ListNamespaces_result)
+        return result.success unless result.success.nil?
+        raise result.ouch1 unless result.ouch1.nil?
+        raise result.ouch2 unless result.ouch2.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'listNamespaces failed: unknown result')
+      end
+
+      def namespaceExists(login, namespaceName)
+        send_namespaceExists(login, namespaceName)
+        return recv_namespaceExists()
+      end
+
+      def send_namespaceExists(login, namespaceName)
+        send_message('namespaceExists', NamespaceExists_args, :login => login, :namespaceName => namespaceName)
+      end
+
+      def recv_namespaceExists()
+        result = receive_message(NamespaceExists_result)
+        return result.success unless result.success.nil?
+        raise result.ouch1 unless result.ouch1.nil?
+        raise result.ouch2 unless result.ouch2.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'namespaceExists failed: unknown result')
+      end
+
+      def createNamespace(login, namespaceName)
+        send_createNamespace(login, namespaceName)
+        recv_createNamespace()
+      end
+
+      def send_createNamespace(login, namespaceName)
+        send_message('createNamespace', CreateNamespace_args, :login => login, :namespaceName => namespaceName)
+      end
+
+      def recv_createNamespace()
+        result = receive_message(CreateNamespace_result)
+        raise result.ouch1 unless result.ouch1.nil?
+        raise result.ouch2 unless result.ouch2.nil?
+        raise result.ouch3 unless result.ouch3.nil?
+        return
+      end
+
+      def deleteNamespace(login, namespaceName)
+        send_deleteNamespace(login, namespaceName)
+        recv_deleteNamespace()
+      end
+
+      def send_deleteNamespace(login, namespaceName)
+        send_message('deleteNamespace', DeleteNamespace_args, :login => login, :namespaceName => namespaceName)
+      end
+
+      def recv_deleteNamespace()
+        result = receive_message(DeleteNamespace_result)
+        raise result.ouch1 unless result.ouch1.nil?
+        raise result.ouch2 unless result.ouch2.nil?
+        raise result.ouch3 unless result.ouch3.nil?
+        raise result.ouch4 unless result.ouch4.nil?
+        return
+      end
+
+      def renameNamespace(login, oldNamespaceName, newNamespaceName)
+        send_renameNamespace(login, oldNamespaceName, newNamespaceName)
+        recv_renameNamespace()
+      end
+
+      def send_renameNamespace(login, oldNamespaceName, newNamespaceName)
+        send_message('renameNamespace', RenameNamespace_args, :login => login, :oldNamespaceName => oldNamespaceName, :newNamespaceName => newNamespaceName)
+      end
+
+      def recv_renameNamespace()
+        result = receive_message(RenameNamespace_result)
+        raise result.ouch1 unless result.ouch1.nil?
+        raise result.ouch2 unless result.ouch2.nil?
+        raise result.ouch3 unless result.ouch3.nil?
+        raise result.ouch4 unless result.ouch4.nil?
+        return
+      end
+
+      def setNamespaceProperty(login, namespaceName, property, value)
+        send_setNamespaceProperty(login, namespaceName, property, value)
+        recv_setNamespaceProperty()
+      end
+
+      def send_setNamespaceProperty(login, namespaceName, property, value)
+        send_message('setNamespaceProperty', SetNamespaceProperty_args, :login => login, :namespaceName => namespaceName, :property => property, :value => value)
+      end
+
+      def recv_setNamespaceProperty()
+        result = receive_message(SetNamespaceProperty_result)
+        raise result.ouch1 unless result.ouch1.nil?
+        raise result.ouch2 unless result.ouch2.nil?
+        raise result.ouch3 unless result.ouch3.nil?
+        return
+      end
+
+      def removeNamespaceProperty(login, namespaceName, property)
+        send_removeNamespaceProperty(login, namespaceName, property)
+        recv_removeNamespaceProperty()
+      end
+
+      def send_removeNamespaceProperty(login, namespaceName, property)
+        send_message('removeNamespaceProperty', RemoveNamespaceProperty_args, :login => login, :namespaceName => namespaceName, :property => property)
+      end
+
+      def recv_removeNamespaceProperty()
+        result = receive_message(RemoveNamespaceProperty_result)
+        raise result.ouch1 unless result.ouch1.nil?
+        raise result.ouch2 unless result.ouch2.nil?
+        raise result.ouch3 unless result.ouch3.nil?
+        return
+      end
+
+      def getNamespaceProperties(login, namespaceName)
+        send_getNamespaceProperties(login, namespaceName)
+        return recv_getNamespaceProperties()
+      end
+
+      def send_getNamespaceProperties(login, namespaceName)
+        send_message('getNamespaceProperties', GetNamespaceProperties_args, :login => login, :namespaceName => namespaceName)
+      end
+
+      def recv_getNamespaceProperties()
+        result = receive_message(GetNamespaceProperties_result)
+        return result.success unless result.success.nil?
+        raise result.ouch1 unless result.ouch1.nil?
+        raise result.ouch2 unless result.ouch2.nil?
+        raise result.ouch3 unless result.ouch3.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'getNamespaceProperties failed: unknown result')
+      end
+
+      def namespaceIdMap(login)
+        send_namespaceIdMap(login)
+        return recv_namespaceIdMap()
+      end
+
+      def send_namespaceIdMap(login)
+        send_message('namespaceIdMap', NamespaceIdMap_args, :login => login)
+      end
+
+      def recv_namespaceIdMap()
+        result = receive_message(NamespaceIdMap_result)
+        return result.success unless result.success.nil?
+        raise result.ouch1 unless result.ouch1.nil?
+        raise result.ouch2 unless result.ouch2.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'namespaceIdMap failed: unknown result')
+      end
+
+      def attachNamespaceIterator(login, namespaceName, setting, scopes)
+        send_attachNamespaceIterator(login, namespaceName, setting, scopes)
+        recv_attachNamespaceIterator()
+      end
+
+      def send_attachNamespaceIterator(login, namespaceName, setting, scopes)
+        send_message('attachNamespaceIterator', AttachNamespaceIterator_args, :login => login, :namespaceName => namespaceName, :setting => setting, :scopes => scopes)
+      end
+
+      def recv_attachNamespaceIterator()
+        result = receive_message(AttachNamespaceIterator_result)
+        raise result.ouch1 unless result.ouch1.nil?
+        raise result.ouch2 unless result.ouch2.nil?
+        raise result.ouch3 unless result.ouch3.nil?
+        return
+      end
+
+      def removeNamespaceIterator(login, namespaceName, name, scopes)
+        send_removeNamespaceIterator(login, namespaceName, name, scopes)
+        recv_removeNamespaceIterator()
+      end
+
+      def send_removeNamespaceIterator(login, namespaceName, name, scopes)
+        send_message('removeNamespaceIterator', RemoveNamespaceIterator_args, :login => login, :namespaceName => namespaceName, :name => name, :scopes => scopes)
+      end
+
+      def recv_removeNamespaceIterator()
+        result = receive_message(RemoveNamespaceIterator_result)
+        raise result.ouch1 unless result.ouch1.nil?
+        raise result.ouch2 unless result.ouch2.nil?
+        raise result.ouch3 unless result.ouch3.nil?
+        return
+      end
+
+      def getNamespaceIteratorSetting(login, namespaceName, name, scope)
+        send_getNamespaceIteratorSetting(login, namespaceName, name, scope)
+        return recv_getNamespaceIteratorSetting()
+      end
+
+      def send_getNamespaceIteratorSetting(login, namespaceName, name, scope)
+        send_message('getNamespaceIteratorSetting', GetNamespaceIteratorSetting_args, :login => login, :namespaceName => namespaceName, :name => name, :scope => scope)
+      end
+
+      def recv_getNamespaceIteratorSetting()
+        result = receive_message(GetNamespaceIteratorSetting_result)
+        return result.success unless result.success.nil?
+        raise result.ouch1 unless result.ouch1.nil?
+        raise result.ouch2 unless result.ouch2.nil?
+        raise result.ouch3 unless result.ouch3.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'getNamespaceIteratorSetting failed: unknown result')
+      end
+
+      def listNamespaceIterators(login, namespaceName)
+        send_listNamespaceIterators(login, namespaceName)
+        return recv_listNamespaceIterators()
+      end
+
+      def send_listNamespaceIterators(login, namespaceName)
+        send_message('listNamespaceIterators', ListNamespaceIterators_args, :login => login, :namespaceName => namespaceName)
+      end
+
+      def recv_listNamespaceIterators()
+        result = receive_message(ListNamespaceIterators_result)
+        return result.success unless result.success.nil?
+        raise result.ouch1 unless result.ouch1.nil?
+        raise result.ouch2 unless result.ouch2.nil?
+        raise result.ouch3 unless result.ouch3.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'listNamespaceIterators failed: unknown result')
+      end
+
+      def checkNamespaceIteratorConflicts(login, namespaceName, setting, scopes)
+        send_checkNamespaceIteratorConflicts(login, namespaceName, setting, scopes)
+        recv_checkNamespaceIteratorConflicts()
+      end
+
+      def send_checkNamespaceIteratorConflicts(login, namespaceName, setting, scopes)
+        send_message('checkNamespaceIteratorConflicts', CheckNamespaceIteratorConflicts_args, :login => login, :namespaceName => namespaceName, :setting => setting, :scopes => scopes)
+      end
+
+      def recv_checkNamespaceIteratorConflicts()
+        result = receive_message(CheckNamespaceIteratorConflicts_result)
+        raise result.ouch1 unless result.ouch1.nil?
+        raise result.ouch2 unless result.ouch2.nil?
+        raise result.ouch3 unless result.ouch3.nil?
+        return
+      end
+
+      def addNamespaceConstraint(login, namespaceName, constraintClassName)
+        send_addNamespaceConstraint(login, namespaceName, constraintClassName)
+        return recv_addNamespaceConstraint()
+      end
+
+      def send_addNamespaceConstraint(login, namespaceName, constraintClassName)
+        send_message('addNamespaceConstraint', AddNamespaceConstraint_args, :login => login, :namespaceName => namespaceName, :constraintClassName => constraintClassName)
+      end
+
+      def recv_addNamespaceConstraint()
+        result = receive_message(AddNamespaceConstraint_result)
+        return result.success unless result.success.nil?
+        raise result.ouch1 unless result.ouch1.nil?
+        raise result.ouch2 unless result.ouch2.nil?
+        raise result.ouch3 unless result.ouch3.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'addNamespaceConstraint failed: unknown result')
+      end
+
+      def removeNamespaceConstraint(login, namespaceName, id)
+        send_removeNamespaceConstraint(login, namespaceName, id)
+        recv_removeNamespaceConstraint()
+      end
+
+      def send_removeNamespaceConstraint(login, namespaceName, id)
+        send_message('removeNamespaceConstraint', RemoveNamespaceConstraint_args, :login => login, :namespaceName => namespaceName, :id => id)
+      end
+
+      def recv_removeNamespaceConstraint()
+        result = receive_message(RemoveNamespaceConstraint_result)
+        raise result.ouch1 unless result.ouch1.nil?
+        raise result.ouch2 unless result.ouch2.nil?
+        raise result.ouch3 unless result.ouch3.nil?
+        return
+      end
+
+      def listNamespaceConstraints(login, namespaceName)
+        send_listNamespaceConstraints(login, namespaceName)
+        return recv_listNamespaceConstraints()
+      end
+
+      def send_listNamespaceConstraints(login, namespaceName)
+        send_message('listNamespaceConstraints', ListNamespaceConstraints_args, :login => login, :namespaceName => namespaceName)
+      end
+
+      def recv_listNamespaceConstraints()
+        result = receive_message(ListNamespaceConstraints_result)
+        return result.success unless result.success.nil?
+        raise result.ouch1 unless result.ouch1.nil?
+        raise result.ouch2 unless result.ouch2.nil?
+        raise result.ouch3 unless result.ouch3.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'listNamespaceConstraints failed: unknown result')
+      end
+
+      def testNamespaceClassLoad(login, namespaceName, className, asTypeName)
+        send_testNamespaceClassLoad(login, namespaceName, className, asTypeName)
+        return recv_testNamespaceClassLoad()
+      end
+
+      def send_testNamespaceClassLoad(login, namespaceName, className, asTypeName)
+        send_message('testNamespaceClassLoad', TestNamespaceClassLoad_args, :login => login, :namespaceName => namespaceName, :className => className, :asTypeName => asTypeName)
+      end
+
+      def recv_testNamespaceClassLoad()
+        result = receive_message(TestNamespaceClassLoad_result)
+        return result.success unless result.success.nil?
+        raise result.ouch1 unless result.ouch1.nil?
+        raise result.ouch2 unless result.ouch2.nil?
+        raise result.ouch3 unless result.ouch3.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'testNamespaceClassLoad failed: unknown result')
+      end
+
     end
 
     class Processor
@@ -2152,6 +2545,45 @@ module Accumulo
         write_result(result, oprot, 'revokeTablePermission', seqid)
       end
 
+      def process_grantNamespacePermission(seqid, iprot, oprot)
+        args = read_args(iprot, GrantNamespacePermission_args)
+        result = GrantNamespacePermission_result.new()
+        begin
+          @handler.grantNamespacePermission(args.login, args.user, args.namespaceName, args.perm)
+        rescue ::Accumulo::AccumuloException => ouch1
+          result.ouch1 = ouch1
+        rescue ::Accumulo::AccumuloSecurityException => ouch2
+          result.ouch2 = ouch2
+        end
+        write_result(result, oprot, 'grantNamespacePermission', seqid)
+      end
+
+      def process_hasNamespacePermission(seqid, iprot, oprot)
+        args = read_args(iprot, HasNamespacePermission_args)
+        result = HasNamespacePermission_result.new()
+        begin
+          result.success = @handler.hasNamespacePermission(args.login, args.user, args.namespaceName, args.perm)
+        rescue ::Accumulo::AccumuloException => ouch1
+          result.ouch1 = ouch1
+        rescue ::Accumulo::AccumuloSecurityException => ouch2
+          result.ouch2 = ouch2
+        end
+        write_result(result, oprot, 'hasNamespacePermission', seqid)
+      end
+
+      def process_revokeNamespacePermission(seqid, iprot, oprot)
+        args = read_args(iprot, RevokeNamespacePermission_args)
+        result = RevokeNamespacePermission_result.new()
+        begin
+          @handler.revokeNamespacePermission(args.login, args.user, args.namespaceName, args.perm)
+        rescue ::Accumulo::AccumuloException => ouch1
+          result.ouch1 = ouch1
+        rescue ::Accumulo::AccumuloSecurityException => ouch2
+          result.ouch2 = ouch2
+        end
+        write_result(result, oprot, 'revokeNamespacePermission', seqid)
+      end
+
       def process_createBatchScanner(seqid, iprot, oprot)
         args = read_args(iprot, CreateBatchScanner_args)
         result = CreateBatchScanner_result.new()
@@ -2364,18 +2796,300 @@ module Accumulo
         write_result(result, oprot, 'getFollowing', seqid)
       end
 
-    end
-
-    # HELPER FUNCTIONS AND STRUCTURES
+      def process_systemNamespace(seqid, iprot, oprot)
+        args = read_args(iprot, SystemNamespace_args)
+        result = SystemNamespace_result.new()
+        result.success = @handler.systemNamespace()
+        write_result(result, oprot, 'systemNamespace', seqid)
+      end
 
-    class Login_args
-      include ::Thrift::Struct, ::Thrift::Struct_Union
-      PRINCIPAL = 1
-      LOGINPROPERTIES = 2
+      def process_defaultNamespace(seqid, iprot, oprot)
+        args = read_args(iprot, DefaultNamespace_args)
+        result = DefaultNamespace_result.new()
+        result.success = @handler.defaultNamespace()
+        write_result(result, oprot, 'defaultNamespace', seqid)
+      end
 
-      FIELDS = {
-        PRINCIPAL => {:type => ::Thrift::Types::STRING, :name => 'principal'},
-        LOGINPROPERTIES => {:type => ::Thrift::Types::MAP, :name => 'loginProperties', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}}
+      def process_listNamespaces(seqid, iprot, oprot)
+        args = read_args(iprot, ListNamespaces_args)
+        result = ListNamespaces_result.new()
+        begin
+          result.success = @handler.listNamespaces(args.login)
+        rescue ::Accumulo::AccumuloException => ouch1
+          result.ouch1 = ouch1
+        rescue ::Accumulo::AccumuloSecurityException => ouch2
+          result.ouch2 = ouch2
+        end
+        write_result(result, oprot, 'listNamespaces', seqid)
+      end
+
+      def process_namespaceExists(seqid, iprot, oprot)
+        args = read_args(iprot, NamespaceExists_args)
+        result = NamespaceExists_result.new()
+        begin
+          result.success = @handler.namespaceExists(args.login, args.namespaceName)
+        rescue ::Accumulo::AccumuloException => ouch1
+          result.ouch1 = ouch1
+        rescue ::Accumulo::AccumuloSecurityException => ouch2
+          result.ouch2 = ouch2
+        end
+        write_result(result, oprot, 'namespaceExists', seqid)
+      end
+
+      def process_createNamespace(seqid, iprot, oprot)
+        args = read_args(iprot, CreateNamespace_args)
+        result = CreateNamespace_result.new()
+        begin
+          @handler.createNamespace(args.login, args.namespaceName)
+        rescue ::Accumulo::AccumuloException => ouch1
+          result.ouch1 = ouch1
+        rescue ::Accumulo::AccumuloSecurityException => ouch2
+          result.ouch2 = ouch2
+        rescue ::Accumulo::NamespaceExistsException => ouch3
+          result.ouch3 = ouch3
+        end
+        write_result(result, oprot, 'createNamespace', seqid)
+      end
+
+      def process_deleteNamespace(seqid, iprot, oprot)
+        args = read_args(iprot, DeleteNamespace_args)
+        result = DeleteNamespace_result.new()
+        begin
+          @handler.deleteNamespace(args.login, args.namespaceName)
+        rescue ::Accumulo::AccumuloException => ouch1
+          result.ouch1 = ouch1
+        rescue ::Accumulo::AccumuloSecurityException => ouch2
+          result.ouch2 = ouch2
+        rescue ::Accumulo::NamespaceNotFoundException => ouch3
+          result.ouch3 = ouch3
+        rescue ::Accumulo::NamespaceNotEmptyException => ouch4
+          result.ouch4 = ouch4
+        end
+        write_result(result, oprot, 'deleteNamespace', seqid)
+      end
+
+      def process_renameNamespace(seqid, iprot, oprot)
+        args = read_args(iprot, RenameNamespace_args)
+        result = RenameNamespace_result.new()
+        begin
+          @handler.renameNamespace(args.login, args.oldNamespaceName, args.newNamespaceName)
+        rescue ::Accumulo::AccumuloException => ouch1
+          result.ouch1 = ouch1
+        rescue ::Accumulo::AccumuloSecurityException => ouch2
+          result.ouch2 = ouch2
+        rescue ::Accumulo::NamespaceNotFoundException => ouch3
+          result.ouch3 = ouch3
+        rescue ::Accumulo::NamespaceExistsException => ouch4
+          result.ouch4 = ouch4
+        end
+        write_result(result, oprot, 'renameNamespace', seqid)
+      end
+
+      def process_setNamespaceProperty(seqid, iprot, oprot)
+        args = read_args(iprot, SetNamespaceProperty_args)
+        result = SetNamespaceProperty_result.new()
+        begin
+          @handler.setNamespaceProperty(args.login, args.namespaceName, args.property, args.value)
+        rescue ::Accumulo::AccumuloException => ouch1
+          result.ouch1 = ouch1
+        rescue ::Accumulo::AccumuloSecurityException => ouch2
+          result.ouch2 = ouch2
+        rescue ::Accumulo::NamespaceNotFoundException => ouch3
+          result.ouch3 = ouch3
+        end
+        write_result(result, oprot, 'setNamespaceProperty', seqid)
+      end
+
+      def process_removeNamespaceProperty(seqid, iprot, oprot)
+        args = read_args(iprot, RemoveNamespaceProperty_args)
+        result = RemoveNamespaceProperty_result.new()
+        begin
+          @handler.removeNamespaceProperty(args.login, args.namespaceName, args.property)
+        rescue ::Accumulo::AccumuloException => ouch1
+          result.ouch1 = ouch1
+        rescue ::Accumulo::AccumuloSecurityException => ouch2
+          result.ouch2 = ouch2
+        rescue ::Accumulo::NamespaceNotFoundException => ouch3
+          result.ouch3 = ouch3
+        end
+        write_result(result, oprot, 'removeNamespaceProperty', seqid)
+      end
+
+      def process_getNamespaceProperties(seqid, iprot, oprot)
+        args = read_args(iprot, GetNamespaceProperties_args)
+        result = GetNamespaceProperties_result.new()
+        begin
+          result.success = @handler.getNamespaceProperties(args.login, args.namespaceName)
+        rescue ::Accumulo::AccumuloException => ouch1
+          result.ouch1 = ouch1
+        rescue ::Accumulo::AccumuloSecurityException => ouch2
+          result.ouch2 = ouch2
+        rescue ::Accumulo::NamespaceNotFoundException => ouch3
+          result.ouch3 = ouch3
+        end
+        write_result(result, oprot, 'getNamespaceProperties', seqid)
+      end
+
+      def process_namespaceIdMap(seqid, iprot, oprot)
+        args = read_args(iprot, NamespaceIdMap_args)
+        result = NamespaceIdMap_result.new()
+        begin
+          result.success = @handler.namespaceIdMap(args.login)
+        rescue ::Accumulo::AccumuloException => ouch1
+          result.ouch1 = ouch1
+        rescue ::Accumulo::AccumuloSecurityException => ouch2
+          result.ouch2 = ouch2
+        end
+        write_result(result, oprot, 'namespaceIdMap', seqid)
+      end
+
+      def process_attachNamespaceIterator(seqid, iprot, oprot)
+        args = read_args(iprot, AttachNamespaceIterator_args)
+        result = AttachNamespaceIterator_result.new()
+        begin
+          @handler.attachNamespaceIterator(args.login, args.namespaceName, args.setting, args.scopes)
+        rescue ::Accumulo::AccumuloException => ouch1
+          result.ouch1 = ouch1
+        rescue ::Accumulo::AccumuloSecurityException => ouch2
+          result.ouch2 = ouch2
+        rescue ::Accumulo::NamespaceNotFoundException => ouch3
+          result.ouch3 = ouch3
+        end
+        write_result(result, oprot, 'attachNamespaceIterator', seqid)
+      end
+
+      def process_removeNamespaceIterator(seqid, iprot, oprot)
+        args = read_args(iprot, RemoveNamespaceIterator_args)
+        result = RemoveNamespaceIterator_result.new()
+        begin
+          @handler.removeNamespaceIterator(args.login, args.namespaceName, args.name, args.scopes)
+        rescue ::Accumulo::AccumuloException => ouch1
+          result.ouch1 = ouch1
+        rescue ::Accumulo::AccumuloSecurityException => ouch2
+          result.ouch2 = ouch2
+        rescue ::Accumulo::NamespaceNotFoundException => ouch3
+          result.ouch3 = ouch3
+        end
+        write_result(result, oprot, 'removeNamespaceIterator', seqid)
+      end
+
+      def process_getNamespaceIteratorSetting(seqid, iprot, oprot)
+        args = read_args(iprot, GetNamespaceIteratorSetting_args)
+        result = GetNamespaceIteratorSetting_result.new()
+        begin
+          result.success = @handler.getNamespaceIteratorSetting(args.login, args.namespaceName, args.name, args.scope)
+        rescue ::Accumulo::AccumuloException => ouch1
+          result.ouch1 = ouch1
+        rescue ::Accumulo::AccumuloSecurityException => ouch2
+          result.ouch2 = ouch2
+        rescue ::Accumulo::NamespaceNotFoundException => ouch3
+          result.ouch3 = ouch3
+        end
+        write_result(result, oprot, 'getNamespaceIteratorSetting', seqid)
+      end
+
+      def process_listNamespaceIterators(seqid, iprot, oprot)
+        args = read_args(iprot, ListNamespaceIterators_args)
+        result = ListNamespaceIterators_result.new()
+        begin
+          result.success = @handler.listNamespaceIterators(args.login, args.namespaceName)
+        rescue ::Accumulo::AccumuloException => ouch1
+          result.ouch1 = ouch1
+        rescue ::Accumulo::AccumuloSecurityException => ouch2
+          result.ouch2 = ouch2
+        rescue ::Accumulo::NamespaceNotFoundException => ouch3
+          result.ouch3 = ouch3
+        end
+        write_result(result, oprot, 'listNamespaceIterators', seqid)
+      end
+
+      def process_checkNamespaceIteratorConflicts(seqid, iprot, oprot)
+        args = read_args(iprot, CheckNamespaceIteratorConflicts_args)
+        result = CheckNamespaceIteratorConflicts_result.new()
+        begin
+          @handler.checkNamespaceIteratorConflicts(args.login, args.namespaceName, args.setting, args.scopes)
+        rescue ::Accumulo::AccumuloException => ouch1
+          result.ouch1 = ouch1
+        rescue ::Accumulo::AccumuloSecurityException => ouch2
+          result.ouch2 = ouch2
+        rescue ::Accumulo::NamespaceNotFoundException => ouch3
+          result.ouch3 = ouch3
+        end
+        write_result(result, oprot, 'checkNamespaceIteratorConflicts', seqid)
+      end
+
+      def process_addNamespaceConstraint(seqid, iprot, oprot)
+        args = read_args(iprot, AddNamespaceConstraint_args)
+        result = AddNamespaceConstraint_result.new()
+        begin
+          result.success = @handler.addNamespaceConstraint(args.login, args.namespaceName, args.constraintClassName)
+        rescue ::Accumulo::AccumuloException => ouch1
+          result.ouch1 = ouch1
+        rescue ::Accumulo::AccumuloSecurityException => ouch2
+          result.ouch2 = ouch2
+        rescue ::Accumulo::NamespaceNotFoundException => ouch3
+          result.ouch3 = ouch3
+        end
+        write_result(result, oprot, 'addNamespaceConstraint', seqid)
+      end
+
+      def process_removeNamespaceConstraint(seqid, iprot, oprot)
+        args = read_args(iprot, RemoveNamespaceConstraint_args)
+        result = RemoveNamespaceConstraint_result.new()
+        begin
+          @handler.removeNamespaceConstraint(args.login, args.namespaceName, args.id)
+        rescue ::Accumulo::AccumuloException => ouch1
+          result.ouch1 = ouch1
+        rescue ::Accumulo::AccumuloSecurityException => ouch2
+          result.ouch2 = ouch2
+        rescue ::Accumulo::NamespaceNotFoundException => ouch3
+          result.ouch3 = ouch3
+        end
+        write_result(result, oprot, 'removeNamespaceConstraint', seqid)
+      end
+
+      def process_listNamespaceConstraints(seqid, iprot, oprot)
+        args = read_args(iprot, ListNamespaceConstraints_args)
+        result = ListNamespaceConstraints_result.new()
+        begin
+          result.success = @handler.listNamespaceConstraints(args.login, args.namespaceName)
+        rescue ::Accumulo::AccumuloException => ouch1
+          result.ouch1 = ouch1
+        rescue ::Accumulo::AccumuloSecurityException => ouch2
+          result.ouch2 = ouch2
+        rescue ::Accumulo::NamespaceNotFoundException => ouch3
+          result.ouch3 = ouch3
+        end
+        write_result(result, oprot, 'listNamespaceConstraints', seqid)
+      end
+
+      def process_testNamespaceClassLoad(seqid, iprot, oprot)
+        args = read_args(iprot, TestNamespaceClassLoad_args)
+        result = TestNamespaceClassLoad_result.new()
+        begin
+          result.success = @handler.testNamespaceClassLoad(args.login, args.namespaceName, args.className, args.asTypeName)
+        rescue ::Accumulo::AccumuloException => ouch1
+          result.ouch1 = ouch1
+        rescue ::Accumulo::AccumuloSecurityException => ouch2
+          result.ouch2 = ouch2
+        rescue ::Accumulo::NamespaceNotFoundException => ouch3
+          result.ouch3 = ouch3
+        end
+        write_result(result, oprot, 'testNamespaceClassLoad', seqid)
+      end
+
+    end
+
+    # HELPER FUNCTIONS AND STRUCTURES
+
+    class Login_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      PRINCIPAL = 1
+      LOGINPROPERTIES = 2
+
+      FIELDS = {
+        PRINCIPAL => {:type => ::Thrift::Types::STRING, :name => 'principal'},
+        LOGINPROPERTIES => {:type => ::Thrift::Types::MAP, :name => 'loginProperties', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}}
       }
 
       def struct_fields; FIELDS; end
@@ -4784,38 +5498,39 @@ module Accumulo
       ::Thrift::Struct.generate_accessors self
     end
 
-    class CreateBatchScanner_args
+    class GrantNamespacePermission_args
       include ::Thrift::Struct, ::Thrift::Struct_Union
       LOGIN = 1
-      TABLENAME = 2
-      OPTIONS = 3
+      USER = 2
+      NAMESPACENAME = 3
+      PERM = 4
 
       FIELDS = {
         LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true},
-        TABLENAME => {:type => ::Thrift::Types::STRING, :name => 'tableName'},
-        OPTIONS => {:type => ::Thrift::Types::STRUCT, :name => 'options', :class => ::Accumulo::BatchScanOptions}
+        USER => {:type => ::Thrift::Types::STRING, :name => 'user'},
+        NAMESPACENAME => {:type => ::Thrift::Types::STRING, :name => 'namespaceName'},
+        PERM => {:type => ::Thrift::Types::I32, :name => 'perm', :enum_class => ::Accumulo::NamespacePermission}
       }
 
       def struct_fields; FIELDS; end
 
       def validate
+        unless @perm.nil? || ::Accumulo::NamespacePermission::VALID_VALUES.include?(@perm)
+          raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field perm!')
+        end
       end
 
       ::Thrift::Struct.generate_accessors self
     end
 
-    class CreateBatchScanner_result
+    class GrantNamespacePermission_result
       include ::Thrift::Struct, ::Thrift::Struct_Union
-      SUCCESS = 0
       OUCH1 = 1
       OUCH2 = 2
-      OUCH3 = 3
 
       FIELDS = {
-        SUCCESS => {:type => ::Thrift::Types::STRING, :name => 'success'},
         OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
-        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException},
-        OUCH3 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch3', :class => ::Accumulo::TableNotFoundException}
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException}
       }
 
       def struct_fields; FIELDS; end
@@ -4826,38 +5541,41 @@ module Accumulo
       ::Thrift::Struct.generate_accessors self
     end
 
-    class CreateScanner_args
+    class HasNamespacePermission_args
       include ::Thrift::Struct, ::Thrift::Struct_Union
       LOGIN = 1
-      TABLENAME = 2
-      OPTIONS = 3
+      USER = 2
+      NAMESPACENAME = 3
+      PERM = 4
 
       FIELDS = {
         LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true},
-        TABLENAME => {:type => ::Thrift::Types::STRING, :name => 'tableName'},
-        OPTIONS => {:type => ::Thrift::Types::STRUCT, :name => 'options', :class => ::Accumulo::ScanOptions}
+        USER => {:type => ::Thrift::Types::STRING, :name => 'user'},
+        NAMESPACENAME => {:type => ::Thrift::Types::STRING, :name => 'namespaceName'},
+        PERM => {:type => ::Thrift::Types::I32, :name => 'perm', :enum_class => ::Accumulo::NamespacePermission}
       }
 
       def struct_fields; FIELDS; end
 
       def validate
+        unless @perm.nil? || ::Accumulo::NamespacePermission::VALID_VALUES.include?(@perm)
+          raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field perm!')
+        end
       end
 
       ::Thrift::Struct.generate_accessors self
     end
 
-    class CreateScanner_result
+    class HasNamespacePermission_result
       include ::Thrift::Struct, ::Thrift::Struct_Union
       SUCCESS = 0
       OUCH1 = 1
       OUCH2 = 2
-      OUCH3 = 3
 
       FIELDS = {
-        SUCCESS => {:type => ::Thrift::Types::STRING, :name => 'success'},
+        SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
         OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
-        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException},
-        OUCH3 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch3', :class => ::Accumulo::TableNotFoundException}
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException}
       }
 
       def struct_fields; FIELDS; end
@@ -4868,30 +5586,39 @@ module Accumulo
       ::Thrift::Struct.generate_accessors self
     end
 
-    class HasNext_args
+    class RevokeNamespacePermission_args
       include ::Thrift::Struct, ::Thrift::Struct_Union
-      SCANNER = 1
+      LOGIN = 1
+      USER = 2
+      NAMESPACENAME = 3
+      PERM = 4
 
       FIELDS = {
-        SCANNER => {:type => ::Thrift::Types::STRING, :name => 'scanner'}
+        LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true},
+        USER => {:type => ::Thrift::Types::STRING, :name => 'user'},
+        NAMESPACENAME => {:type => ::Thrift::Types::STRING, :name => 'namespaceName'},
+        PERM => {:type => ::Thrift::Types::I32, :name => 'perm', :enum_class => ::Accumulo::NamespacePermission}
       }
 
       def struct_fields; FIELDS; end
 
       def validate
+        unless @perm.nil? || ::Accumulo::NamespacePermission::VALID_VALUES.include?(@perm)
+          raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field perm!')
+        end
       end
 
       ::Thrift::Struct.generate_accessors self
     end
 
-    class HasNext_result
+    class RevokeNamespacePermission_result
       include ::Thrift::Struct, ::Thrift::Struct_Union
-      SUCCESS = 0
       OUCH1 = 1
+      OUCH2 = 2
 
       FIELDS = {
-        SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
-        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::UnknownScanner}
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException}
       }
 
       def struct_fields; FIELDS; end
@@ -4902,12 +5629,16 @@ module Accumulo
       ::Thrift::Struct.generate_accessors self
     end
 
-    class NextEntry_args
+    class CreateBatchScanner_args
       include ::Thrift::Struct, ::Thrift::Struct_Union
-      SCANNER = 1
+      LOGIN = 1
+      TABLENAME = 2
+      OPTIONS = 3
 
       FIELDS = {
-        SCANNER => {:type => ::Thrift::Types::STRING, :name => 'scanner'}
+        LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true},
+        TABLENAME => {:type => ::Thrift::Types::STRING, :name => 'tableName'},
+        OPTIONS => {:type => ::Thrift::Types::STRUCT, :name => 'options', :class => ::Accumulo::BatchScanOptions}
       }
 
       def struct_fields; FIELDS; end
@@ -4918,7 +5649,7 @@ module Accumulo
       ::Thrift::Struct.generate_accessors self
     end
 
-    class NextEntry_result
+    class CreateBatchScanner_result
       include ::Thrift::Struct, ::Thrift::Struct_Union
       SUCCESS = 0
       OUCH1 = 1
@@ -4926,10 +5657,10 @@ module Accumulo
       OUCH3 = 3
 
       FIELDS = {
-        SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Accumulo::KeyValueAndPeek},
-        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::NoMoreEntriesException},
-        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::UnknownScanner},
-        OUCH3 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch3', :class => ::Accumulo::AccumuloSecurityException}
+        SUCCESS => {:type => ::Thrift::Types::STRING, :name => 'success'},
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException},
+        OUCH3 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch3', :class => ::Accumulo::TableNotFoundException}
       }
 
       def struct_fields; FIELDS; end
@@ -4940,14 +5671,128 @@ module Accumulo
       ::Thrift::Struct.generate_accessors self
     end
 
-    class NextK_args
+    class CreateScanner_args
       include ::Thrift::Struct, ::Thrift::Struct_Union
-      SCANNER = 1
-      K = 2
+      LOGIN = 1
+      TABLENAME = 2
+      OPTIONS = 3
 
       FIELDS = {
-        SCANNER => {:type => ::Thrift::Types::STRING, :name => 'scanner'},
-        K => {:type => ::Thrift::Types::I32, :name => 'k'}
+        LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true},
+        TABLENAME => {:type => ::Thrift::Types::STRING, :name => 'tableName'},
+        OPTIONS => {:type => ::Thrift::Types::STRUCT, :name => 'options', :class => ::Accumulo::ScanOptions}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class CreateScanner_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      OUCH1 = 1
+      OUCH2 = 2
+      OUCH3 = 3
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::STRING, :name => 'success'},
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException},
+        OUCH3 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch3', :class => ::Accumulo::TableNotFoundException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class HasNext_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SCANNER = 1
+
+      FIELDS = {
+        SCANNER => {:type => ::Thrift::Types::STRING, :name => 'scanner'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class HasNext_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      OUCH1 = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::UnknownScanner}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class NextEntry_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SCANNER = 1
+
+      FIELDS = {
+        SCANNER => {:type => ::Thrift::Types::STRING, :name => 'scanner'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class NextEntry_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      OUCH1 = 1
+      OUCH2 = 2
+      OUCH3 = 3
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Accumulo::KeyValueAndPeek},
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::NoMoreEntriesException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::UnknownScanner},
+        OUCH3 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch3', :class => ::Accumulo::AccumuloSecurityException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class NextK_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SCANNER = 1
+      K = 2
+
+      FIELDS = {
+        SCANNER => {:type => ::Thrift::Types::STRING, :name => 'scanner'},
+        K => {:type => ::Thrift::Types::I32, :name => 'k'}
       }
 
       def struct_fields; FIELDS; end
@@ -5426,6 +6271,799 @@ module Accumulo
       ::Thrift::Struct.generate_accessors self
     end
 
+    class SystemNamespace_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+
+      FIELDS = {
+
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class SystemNamespace_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::STRING, :name => 'success'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class DefaultNamespace_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+
+      FIELDS = {
+
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class DefaultNamespace_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::STRING, :name => 'success'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ListNamespaces_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      LOGIN = 1
+
+      FIELDS = {
+        LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ListNamespaces_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      OUCH1 = 1
+      OUCH2 = 2
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class NamespaceExists_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      LOGIN = 1
+      NAMESPACENAME = 2
+
+      FIELDS = {
+        LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true},
+        NAMESPACENAME => {:type => ::Thrift::Types::STRING, :name => 'namespaceName'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class NamespaceExists_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      OUCH1 = 1
+      OUCH2 = 2
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class CreateNamespace_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      LOGIN = 1
+      NAMESPACENAME = 2
+
+      FIELDS = {
+        LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true},
+        NAMESPACENAME => {:type => ::Thrift::Types::STRING, :name => 'namespaceName'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class CreateNamespace_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      OUCH1 = 1
+      OUCH2 = 2
+      OUCH3 = 3
+
+      FIELDS = {
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException},
+        OUCH3 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch3', :class => ::Accumulo::NamespaceExistsException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class DeleteNamespace_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      LOGIN = 1
+      NAMESPACENAME = 2
+
+      FIELDS = {
+        LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true},
+        NAMESPACENAME => {:type => ::Thrift::Types::STRING, :name => 'namespaceName'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class DeleteNamespace_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      OUCH1 = 1
+      OUCH2 = 2
+      OUCH3 = 3
+      OUCH4 = 4
+
+      FIELDS = {
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException},
+        OUCH3 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch3', :class => ::Accumulo::NamespaceNotFoundException},
+        OUCH4 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch4', :class => ::Accumulo::NamespaceNotEmptyException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class RenameNamespace_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      LOGIN = 1
+      OLDNAMESPACENAME = 2
+      NEWNAMESPACENAME = 3
+
+      FIELDS = {
+        LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true},
+        OLDNAMESPACENAME => {:type => ::Thrift::Types::STRING, :name => 'oldNamespaceName'},
+        NEWNAMESPACENAME => {:type => ::Thrift::Types::STRING, :name => 'newNamespaceName'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class RenameNamespace_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      OUCH1 = 1
+      OUCH2 = 2
+      OUCH3 = 3
+      OUCH4 = 4
+
+      FIELDS = {
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException},
+        OUCH3 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch3', :class => ::Accumulo::NamespaceNotFoundException},
+        OUCH4 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch4', :class => ::Accumulo::NamespaceExistsException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class SetNamespaceProperty_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      LOGIN = 1
+      NAMESPACENAME = 2
+      PROPERTY = 3
+      VALUE = 4
+
+      FIELDS = {
+        LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true},
+        NAMESPACENAME => {:type => ::Thrift::Types::STRING, :name => 'namespaceName'},
+        PROPERTY => {:type => ::Thrift::Types::STRING, :name => 'property'},
+        VALUE => {:type => ::Thrift::Types::STRING, :name => 'value'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class SetNamespaceProperty_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      OUCH1 = 1
+      OUCH2 = 2
+      OUCH3 = 3
+
+      FIELDS = {
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException},
+        OUCH3 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch3', :class => ::Accumulo::NamespaceNotFoundException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class RemoveNamespaceProperty_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      LOGIN = 1
+      NAMESPACENAME = 2
+      PROPERTY = 3
+
+      FIELDS = {
+        LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true},
+        NAMESPACENAME => {:type => ::Thrift::Types::STRING, :name => 'namespaceName'},
+        PROPERTY => {:type => ::Thrift::Types::STRING, :name => 'property'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class RemoveNamespaceProperty_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      OUCH1 = 1
+      OUCH2 = 2
+      OUCH3 = 3
+
+      FIELDS = {
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException},
+        OUCH3 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch3', :class => ::Accumulo::NamespaceNotFoundException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class GetNamespaceProperties_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      LOGIN = 1
+      NAMESPACENAME = 2
+
+      FIELDS = {
+        LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true},
+        NAMESPACENAME => {:type => ::Thrift::Types::STRING, :name => 'namespaceName'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class GetNamespaceProperties_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      OUCH1 = 1
+      OUCH2 = 2
+      OUCH3 = 3
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::MAP, :name => 'success', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}},
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException},
+        OUCH3 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch3', :class => ::Accumulo::NamespaceNotFoundException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class NamespaceIdMap_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      LOGIN = 1
+
+      FIELDS = {
+        LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class NamespaceIdMap_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      OUCH1 = 1
+      OUCH2 = 2
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::MAP, :name => 'success', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}},
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class AttachNamespaceIterator_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      LOGIN = 1
+      NAMESPACENAME = 2
+      SETTING = 3
+      SCOPES = 4
+
+      FIELDS = {
+        LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true},
+        NAMESPACENAME => {:type => ::Thrift::Types::STRING, :name => 'namespaceName'},
+        SETTING => {:type => ::Thrift::Types::STRUCT, :name => 'setting', :class => ::Accumulo::IteratorSetting},
+        SCOPES => {:type => ::Thrift::Types::SET, :name => 'scopes', :element => {:type => ::Thrift::Types::I32, :enum_class => ::Accumulo::IteratorScope}}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class AttachNamespaceIterator_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      OUCH1 = 1
+      OUCH2 = 2
+      OUCH3 = 3
+
+      FIELDS = {
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException},
+        OUCH3 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch3', :class => ::Accumulo::NamespaceNotFoundException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class RemoveNamespaceIterator_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      LOGIN = 1
+      NAMESPACENAME = 2
+      NAME = 3
+      SCOPES = 4
+
+      FIELDS = {
+        LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true},
+        NAMESPACENAME => {:type => ::Thrift::Types::STRING, :name => 'namespaceName'},
+        NAME => {:type => ::Thrift::Types::STRING, :name => 'name'},
+        SCOPES => {:type => ::Thrift::Types::SET, :name => 'scopes', :element => {:type => ::Thrift::Types::I32, :enum_class => ::Accumulo::IteratorScope}}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class RemoveNamespaceIterator_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      OUCH1 = 1
+      OUCH2 = 2
+      OUCH3 = 3
+
+      FIELDS = {
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException},
+        OUCH3 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch3', :class => ::Accumulo::NamespaceNotFoundException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class GetNamespaceIteratorSetting_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      LOGIN = 1
+      NAMESPACENAME = 2
+      NAME = 3
+      SCOPE = 4
+
+      FIELDS = {
+        LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true},
+        NAMESPACENAME => {:type => ::Thrift::Types::STRING, :name => 'namespaceName'},
+        NAME => {:type => ::Thrift::Types::STRING, :name => 'name'},
+        SCOPE => {:type => ::Thrift::Types::I32, :name => 'scope', :enum_class => ::Accumulo::IteratorScope}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+        unless @scope.nil? || ::Accumulo::IteratorScope::VALID_VALUES.include?(@scope)
+          raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field scope!')
+        end
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class GetNamespaceIteratorSetting_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      OUCH1 = 1
+      OUCH2 = 2
+      OUCH3 = 3
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Accumulo::IteratorSetting},
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException},
+        OUCH3 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch3', :class => ::Accumulo::NamespaceNotFoundException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ListNamespaceIterators_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      LOGIN = 1
+      NAMESPACENAME = 2
+
+      FIELDS = {
+        LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true},
+        NAMESPACENAME => {:type => ::Thrift::Types::STRING, :name => 'namespaceName'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ListNamespaceIterators_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      OUCH1 = 1
+      OUCH2 = 2
+      OUCH3 = 3
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::MAP, :name => 'success', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::SET, :element => {:type => ::Thrift::Types::I32, :enum_class => ::Accumulo::IteratorScope}}},
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException},
+        OUCH3 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch3', :class => ::Accumulo::NamespaceNotFoundException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class CheckNamespaceIteratorConflicts_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      LOGIN = 1
+      NAMESPACENAME = 2
+      SETTING = 3
+      SCOPES = 4
+
+      FIELDS = {
+        LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true},
+        NAMESPACENAME => {:type => ::Thrift::Types::STRING, :name => 'namespaceName'},
+        SETTING => {:type => ::Thrift::Types::STRUCT, :name => 'setting', :class => ::Accumulo::IteratorSetting},
+        SCOPES => {:type => ::Thrift::Types::SET, :name => 'scopes', :element => {:type => ::Thrift::Types::I32, :enum_class => ::Accumulo::IteratorScope}}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class CheckNamespaceIteratorConflicts_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      OUCH1 = 1
+      OUCH2 = 2
+      OUCH3 = 3
+
+      FIELDS = {
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException},
+        OUCH3 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch3', :class => ::Accumulo::NamespaceNotFoundException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class AddNamespaceConstraint_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      LOGIN = 1
+      NAMESPACENAME = 2
+      CONSTRAINTCLASSNAME = 3
+
+      FIELDS = {
+        LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true},
+        NAMESPACENAME => {:type => ::Thrift::Types::STRING, :name => 'namespaceName'},
+        CONSTRAINTCLASSNAME => {:type => ::Thrift::Types::STRING, :name => 'constraintClassName'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class AddNamespaceConstraint_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      OUCH1 = 1
+      OUCH2 = 2
+      OUCH3 = 3
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::I32, :name => 'success'},
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException},
+        OUCH3 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch3', :class => ::Accumulo::NamespaceNotFoundException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class RemoveNamespaceConstraint_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      LOGIN = 1
+      NAMESPACENAME = 2
+      ID = 3
+
+      FIELDS = {
+        LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true},
+        NAMESPACENAME => {:type => ::Thrift::Types::STRING, :name => 'namespaceName'},
+        ID => {:type => ::Thrift::Types::I32, :name => 'id'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class RemoveNamespaceConstraint_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      OUCH1 = 1
+      OUCH2 = 2
+      OUCH3 = 3
+
+      FIELDS = {
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException},
+        OUCH3 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch3', :class => ::Accumulo::NamespaceNotFoundException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ListNamespaceConstraints_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      LOGIN = 1
+      NAMESPACENAME = 2
+
+      FIELDS = {
+        LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true},
+        NAMESPACENAME => {:type => ::Thrift::Types::STRING, :name => 'namespaceName'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ListNamespaceConstraints_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      OUCH1 = 1
+      OUCH2 = 2
+      OUCH3 = 3
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::MAP, :name => 'success', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::I32}},
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException},
+        OUCH3 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch3', :class => ::Accumulo::NamespaceNotFoundException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class TestNamespaceClassLoad_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      LOGIN = 1
+      NAMESPACENAME = 2
+      CLASSNAME = 3
+      ASTYPENAME = 4
+
+      FIELDS = {
+        LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true},
+        NAMESPACENAME => {:type => ::Thrift::Types::STRING, :name => 'namespaceName'},
+        CLASSNAME => {:type => ::Thrift::Types::STRING, :name => 'className'},
+        ASTYPENAME => {:type => ::Thrift::Types::STRING, :name => 'asTypeName'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class TestNamespaceClassLoad_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      OUCH1 = 1
+      OUCH2 = 2
+      OUCH3 = 3
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
+        OUCH1 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch1', :class => ::Accumulo::AccumuloException},
+        OUCH2 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch2', :class => ::Accumulo::AccumuloSecurityException},
+        OUCH3 => {:type => ::Thrift::Types::STRUCT, :name => 'ouch3', :class => ::Accumulo::NamespaceNotFoundException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
   end
 
 end

http://git-wip-us.apache.org/repos/asf/accumulo/blob/8839fe51/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 1a1484e..e542df6 100644
--- a/proxy/src/main/ruby/proxy_types.rb
+++ b/proxy/src/main/ruby/proxy_types.rb
@@ -56,6 +56,20 @@ module Accumulo
     VALID_VALUES = Set.new([GRANT, CREATE_TABLE, DROP_TABLE, ALTER_TABLE, CREATE_USER, DROP_USER, ALTER_USER, SYSTEM]).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
@@ -775,4 +789,73 @@ module Accumulo
     ::Thrift::Struct.generate_accessors self
   end
 
+  class NamespaceExistsException < ::Thrift::Exception
+    include ::Thrift::Struct, ::Thrift::Struct_Union
+    def initialize(message=nil)
+      super()
+      self.msg = message
+    end
+
+    def message; msg end
+
+    MSG = 1
+
+    FIELDS = {
+      MSG => {:type => ::Thrift::Types::STRING, :name => 'msg'}
+    }
+
+    def struct_fields; FIELDS; end
+
+    def validate
+    end
+
+    ::Thrift::Struct.generate_accessors self
+  end
+
+  class NamespaceNotFoundException < ::Thrift::Exception
+    include ::Thrift::Struct, ::Thrift::Struct_Union
+    def initialize(message=nil)
+      super()
+      self.msg = message
+    end
+
+    def message; msg end
+
+    MSG = 1
+
+    FIELDS = {
+      MSG => {:type => ::Thrift::Types::STRING, :name => 'msg'}
+    }
+
+    def struct_fields; FIELDS; end
+
+    def validate
+    end
+
+    ::Thrift::Struct.generate_accessors self
+  end
+
+  class NamespaceNotEmptyException < ::Thrift::Exception
+    include ::Thrift::Struct, ::Thrift::Struct_Union
+    def initialize(message=nil)
+      super()
+      self.msg = message
+    end
+
+    def message; msg end
+
+    MSG = 1
+
+    FIELDS = {
+      MSG => {:type => ::Thrift::Types::STRING, :name => 'msg'}
+    }
+
+    def struct_fields; FIELDS; end
+
+    def validate
+    end
+
+    ::Thrift::Struct.generate_accessors self
+  end
+
 end

http://git-wip-us.apache.org/repos/asf/accumulo/blob/8839fe51/proxy/src/main/thrift/proxy.thrift
----------------------------------------------------------------------
diff --git a/proxy/src/main/thrift/proxy.thrift b/proxy/src/main/thrift/proxy.thrift
index 25510d1..3814c44 100644
--- a/proxy/src/main/thrift/proxy.thrift
+++ b/proxy/src/main/thrift/proxy.thrift
@@ -133,6 +133,18 @@ enum SystemPermission {
   SYSTEM = 7,
 }
 
+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
@@ -297,6 +309,18 @@ exception MutationsRejectedException {
   1:string msg
 }
 
+exception NamespaceExistsException {
+  1:string msg
+}
+
+exception NamespaceNotFoundException {
+  1:string msg
+}
+
+exception NamespaceNotEmptyException {
+  1:string msg
+}
+
 service AccumuloProxy
 {
   // get an authentication token
@@ -390,6 +414,12 @@ service AccumuloProxy
   set<string> listLocalUsers (1:binary login)                                                        throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3);
   void revokeSystemPermission (1:binary login, 2:string user, 3:SystemPermission perm)               throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2);
   void revokeTablePermission (1:binary login, 2:string user, 3:string table, 4:TablePermission perm) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3);
+  void grantNamespacePermission (1:binary login, 2:string user, 3:string namespaceName,
+                                 4:NamespacePermission perm)                                         throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2);
+  bool hasNamespacePermission (1:binary login, 2:string user, 3:string namespaceName,
+                               4:NamespacePermission perm)                                           throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2);
+  void revokeNamespacePermission (1:binary login, 2:string user, 3:string namespaceName,
+                                  4:NamespacePermission perm)                                        throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2);
 
   // scanning
   string createBatchScanner(1:binary login, 2:string tableName, 3:BatchScanOptions options)          throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3);
@@ -427,4 +457,33 @@ service AccumuloProxy
   // utilities
   Range getRowRange(1:binary row);
   Key getFollowing(1:Key key, 2:PartialKey part);
-}
\ No newline at end of file
+
+  // namespace operations, since 1.8.0
+  string systemNamespace();
+  string defaultNamespace();
+  list<string> listNamespaces(1:binary login)                                                      throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2);
+  bool namespaceExists(1:binary login, 2:string namespaceName)                                     throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2);
+  void createNamespace(1:binary login, 2:string namespaceName)                                     throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:NamespaceExistsException ouch3);
+  void deleteNamespace(1:binary login, 2:string namespaceName)                                     throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:NamespaceNotFoundException ouch3, 4:NamespaceNotEmptyException ouch4);
+  void renameNamespace(1:binary login, 2:string oldNamespaceName, 3:string newNamespaceName)       throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:NamespaceNotFoundException ouch3, 4:NamespaceExistsException ouch4);
+  void setNamespaceProperty(1:binary login, 2:string namespaceName, 3:string property,
+                            4:string value)                                                        throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:NamespaceNotFoundException ouch3);
+  void removeNamespaceProperty(1:binary login, 2:string namespaceName, 3:string property)          throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:NamespaceNotFoundException ouch3);
+  map<string,string> getNamespaceProperties(1:binary login, 2:string namespaceName)                throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:NamespaceNotFoundException ouch3);
+  map<string,string> namespaceIdMap(1:binary login)                                                throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2);
+  void attachNamespaceIterator(1:binary login, 2:string namespaceName, 3:IteratorSetting setting,
+                               4:set<IteratorScope> scopes)                                        throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:NamespaceNotFoundException ouch3);
+  void removeNamespaceIterator(1:binary login, 2:string namespaceName, 3:string name,
+                               4:set<IteratorScope> scopes)                                        throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:NamespaceNotFoundException ouch3);
+  IteratorSetting getNamespaceIteratorSetting(1:binary login, 2:string namespaceName,
+                                              3:string name, 4:IteratorScope scope)                throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:NamespaceNotFoundException ouch3);
+  map<string,set<IteratorScope>> listNamespaceIterators(1:binary login, 2:string namespaceName)    throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:NamespaceNotFoundException ouch3);
+  void checkNamespaceIteratorConflicts(1:binary login, 2:string namespaceName,
+                                       3:IteratorSetting setting, 4:set<IteratorScope> scopes)     throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:NamespaceNotFoundException ouch3);
+  i32 addNamespaceConstraint(1:binary login, 2:string namespaceName,
+                             3:string constraintClassName)                                         throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:NamespaceNotFoundException ouch3);
+  void removeNamespaceConstraint(1:binary login, 2:string namespaceName, 3:i32 id)                 throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:NamespaceNotFoundException ouch3);
+  map<string,i32> listNamespaceConstraints(1:binary login, 2:string namespaceName)                 throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:NamespaceNotFoundException ouch3);
+  bool testNamespaceClassLoad(1:binary login, 2:string namespaceName, 3:string className,
+                              4:string asTypeName)                                                 throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:NamespaceNotFoundException ouch3);
+}


[8/9] accumulo git commit: ACCUMULO-4147 Add Accumulo Namespace Operations to Proxy

Posted by kt...@apache.org.
http://git-wip-us.apache.org/repos/asf/accumulo/blob/8839fe51/proxy/src/main/cpp/AccumuloProxy.cpp
----------------------------------------------------------------------
diff --git a/proxy/src/main/cpp/AccumuloProxy.cpp b/proxy/src/main/cpp/AccumuloProxy.cpp
index d74ad95..d0add35 100644
--- a/proxy/src/main/cpp/AccumuloProxy.cpp
+++ b/proxy/src/main/cpp/AccumuloProxy.cpp
@@ -62,17 +62,17 @@ uint32_t AccumuloProxy_login_args::read(::apache::thrift::protocol::TProtocol* i
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             this->loginProperties.clear();
-            uint32_t _size189;
-            ::apache::thrift::protocol::TType _ktype190;
-            ::apache::thrift::protocol::TType _vtype191;
-            xfer += iprot->readMapBegin(_ktype190, _vtype191, _size189);
-            uint32_t _i193;
-            for (_i193 = 0; _i193 < _size189; ++_i193)
+            uint32_t _size195;
+            ::apache::thrift::protocol::TType _ktype196;
+            ::apache::thrift::protocol::TType _vtype197;
+            xfer += iprot->readMapBegin(_ktype196, _vtype197, _size195);
+            uint32_t _i199;
+            for (_i199 = 0; _i199 < _size195; ++_i199)
             {
-              std::string _key194;
-              xfer += iprot->readString(_key194);
-              std::string& _val195 = this->loginProperties[_key194];
-              xfer += iprot->readString(_val195);
+              std::string _key200;
+              xfer += iprot->readString(_key200);
+              std::string& _val201 = this->loginProperties[_key200];
+              xfer += iprot->readString(_val201);
             }
             xfer += iprot->readMapEnd();
           }
@@ -105,11 +105,11 @@ uint32_t AccumuloProxy_login_args::write(::apache::thrift::protocol::TProtocol*
   xfer += oprot->writeFieldBegin("loginProperties", ::apache::thrift::protocol::T_MAP, 2);
   {
     xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->loginProperties.size()));
-    std::map<std::string, std::string> ::const_iterator _iter196;
-    for (_iter196 = this->loginProperties.begin(); _iter196 != this->loginProperties.end(); ++_iter196)
+    std::map<std::string, std::string> ::const_iterator _iter202;
+    for (_iter202 = this->loginProperties.begin(); _iter202 != this->loginProperties.end(); ++_iter202)
     {
-      xfer += oprot->writeString(_iter196->first);
-      xfer += oprot->writeString(_iter196->second);
+      xfer += oprot->writeString(_iter202->first);
+      xfer += oprot->writeString(_iter202->second);
     }
     xfer += oprot->writeMapEnd();
   }
@@ -137,11 +137,11 @@ uint32_t AccumuloProxy_login_pargs::write(::apache::thrift::protocol::TProtocol*
   xfer += oprot->writeFieldBegin("loginProperties", ::apache::thrift::protocol::T_MAP, 2);
   {
     xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_STRING, static_cast<uint32_t>((*(this->loginProperties)).size()));
-    std::map<std::string, std::string> ::const_iterator _iter197;
-    for (_iter197 = (*(this->loginProperties)).begin(); _iter197 != (*(this->loginProperties)).end(); ++_iter197)
+    std::map<std::string, std::string> ::const_iterator _iter203;
+    for (_iter203 = (*(this->loginProperties)).begin(); _iter203 != (*(this->loginProperties)).end(); ++_iter203)
     {
-      xfer += oprot->writeString(_iter197->first);
-      xfer += oprot->writeString(_iter197->second);
+      xfer += oprot->writeString(_iter203->first);
+      xfer += oprot->writeString(_iter203->second);
     }
     xfer += oprot->writeMapEnd();
   }
@@ -605,15 +605,15 @@ uint32_t AccumuloProxy_addSplits_args::read(::apache::thrift::protocol::TProtoco
         if (ftype == ::apache::thrift::protocol::T_SET) {
           {
             this->splits.clear();
-            uint32_t _size198;
-            ::apache::thrift::protocol::TType _etype201;
-            xfer += iprot->readSetBegin(_etype201, _size198);
-            uint32_t _i202;
-            for (_i202 = 0; _i202 < _size198; ++_i202)
+            uint32_t _size204;
+            ::apache::thrift::protocol::TType _etype207;
+            xfer += iprot->readSetBegin(_etype207, _size204);
+            uint32_t _i208;
+            for (_i208 = 0; _i208 < _size204; ++_i208)
             {
-              std::string _elem203;
-              xfer += iprot->readBinary(_elem203);
-              this->splits.insert(_elem203);
+              std::string _elem209;
+              xfer += iprot->readBinary(_elem209);
+              this->splits.insert(_elem209);
             }
             xfer += iprot->readSetEnd();
           }
@@ -650,10 +650,10 @@ uint32_t AccumuloProxy_addSplits_args::write(::apache::thrift::protocol::TProtoc
   xfer += oprot->writeFieldBegin("splits", ::apache::thrift::protocol::T_SET, 3);
   {
     xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->splits.size()));
-    std::set<std::string> ::const_iterator _iter204;
-    for (_iter204 = this->splits.begin(); _iter204 != this->splits.end(); ++_iter204)
+    std::set<std::string> ::const_iterator _iter210;
+    for (_iter210 = this->splits.begin(); _iter210 != this->splits.end(); ++_iter210)
     {
-      xfer += oprot->writeBinary((*_iter204));
+      xfer += oprot->writeBinary((*_iter210));
     }
     xfer += oprot->writeSetEnd();
   }
@@ -685,10 +685,10 @@ uint32_t AccumuloProxy_addSplits_pargs::write(::apache::thrift::protocol::TProto
   xfer += oprot->writeFieldBegin("splits", ::apache::thrift::protocol::T_SET, 3);
   {
     xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>((*(this->splits)).size()));
-    std::set<std::string> ::const_iterator _iter205;
-    for (_iter205 = (*(this->splits)).begin(); _iter205 != (*(this->splits)).end(); ++_iter205)
+    std::set<std::string> ::const_iterator _iter211;
+    for (_iter211 = (*(this->splits)).begin(); _iter211 != (*(this->splits)).end(); ++_iter211)
     {
-      xfer += oprot->writeBinary((*_iter205));
+      xfer += oprot->writeBinary((*_iter211));
     }
     xfer += oprot->writeSetEnd();
   }
@@ -901,17 +901,17 @@ uint32_t AccumuloProxy_attachIterator_args::read(::apache::thrift::protocol::TPr
         if (ftype == ::apache::thrift::protocol::T_SET) {
           {
             this->scopes.clear();
-            uint32_t _size206;
-            ::apache::thrift::protocol::TType _etype209;
-            xfer += iprot->readSetBegin(_etype209, _size206);
-            uint32_t _i210;
-            for (_i210 = 0; _i210 < _size206; ++_i210)
+            uint32_t _size212;
+            ::apache::thrift::protocol::TType _etype215;
+            xfer += iprot->readSetBegin(_etype215, _size212);
+            uint32_t _i216;
+            for (_i216 = 0; _i216 < _size212; ++_i216)
             {
-              IteratorScope::type _elem211;
-              int32_t ecast212;
-              xfer += iprot->readI32(ecast212);
-              _elem211 = (IteratorScope::type)ecast212;
-              this->scopes.insert(_elem211);
+              IteratorScope::type _elem217;
+              int32_t ecast218;
+              xfer += iprot->readI32(ecast218);
+              _elem217 = (IteratorScope::type)ecast218;
+              this->scopes.insert(_elem217);
             }
             xfer += iprot->readSetEnd();
           }
@@ -952,10 +952,10 @@ uint32_t AccumuloProxy_attachIterator_args::write(::apache::thrift::protocol::TP
   xfer += oprot->writeFieldBegin("scopes", ::apache::thrift::protocol::T_SET, 4);
   {
     xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_I32, static_cast<uint32_t>(this->scopes.size()));
-    std::set<IteratorScope::type> ::const_iterator _iter213;
-    for (_iter213 = this->scopes.begin(); _iter213 != this->scopes.end(); ++_iter213)
+    std::set<IteratorScope::type> ::const_iterator _iter219;
+    for (_iter219 = this->scopes.begin(); _iter219 != this->scopes.end(); ++_iter219)
     {
-      xfer += oprot->writeI32((int32_t)(*_iter213));
+      xfer += oprot->writeI32((int32_t)(*_iter219));
     }
     xfer += oprot->writeSetEnd();
   }
@@ -991,10 +991,10 @@ uint32_t AccumuloProxy_attachIterator_pargs::write(::apache::thrift::protocol::T
   xfer += oprot->writeFieldBegin("scopes", ::apache::thrift::protocol::T_SET, 4);
   {
     xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_I32, static_cast<uint32_t>((*(this->scopes)).size()));
-    std::set<IteratorScope::type> ::const_iterator _iter214;
-    for (_iter214 = (*(this->scopes)).begin(); _iter214 != (*(this->scopes)).end(); ++_iter214)
+    std::set<IteratorScope::type> ::const_iterator _iter220;
+    for (_iter220 = (*(this->scopes)).begin(); _iter220 != (*(this->scopes)).end(); ++_iter220)
     {
-      xfer += oprot->writeI32((int32_t)(*_iter214));
+      xfer += oprot->writeI32((int32_t)(*_iter220));
     }
     xfer += oprot->writeSetEnd();
   }
@@ -1207,17 +1207,17 @@ uint32_t AccumuloProxy_checkIteratorConflicts_args::read(::apache::thrift::proto
         if (ftype == ::apache::thrift::protocol::T_SET) {
           {
             this->scopes.clear();
-            uint32_t _size215;
-            ::apache::thrift::protocol::TType _etype218;
-            xfer += iprot->readSetBegin(_etype218, _size215);
-            uint32_t _i219;
-            for (_i219 = 0; _i219 < _size215; ++_i219)
+            uint32_t _size221;
+            ::apache::thrift::protocol::TType _etype224;
+            xfer += iprot->readSetBegin(_etype224, _size221);
+            uint32_t _i225;
+            for (_i225 = 0; _i225 < _size221; ++_i225)
             {
-              IteratorScope::type _elem220;
-              int32_t ecast221;
-              xfer += iprot->readI32(ecast221);
-              _elem220 = (IteratorScope::type)ecast221;
-              this->scopes.insert(_elem220);
+              IteratorScope::type _elem226;
+              int32_t ecast227;
+              xfer += iprot->readI32(ecast227);
+              _elem226 = (IteratorScope::type)ecast227;
+              this->scopes.insert(_elem226);
             }
             xfer += iprot->readSetEnd();
           }
@@ -1258,10 +1258,10 @@ uint32_t AccumuloProxy_checkIteratorConflicts_args::write(::apache::thrift::prot
   xfer += oprot->writeFieldBegin("scopes", ::apache::thrift::protocol::T_SET, 4);
   {
     xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_I32, static_cast<uint32_t>(this->scopes.size()));
-    std::set<IteratorScope::type> ::const_iterator _iter222;
-    for (_iter222 = this->scopes.begin(); _iter222 != this->scopes.end(); ++_iter222)
+    std::set<IteratorScope::type> ::const_iterator _iter228;
+    for (_iter228 = this->scopes.begin(); _iter228 != this->scopes.end(); ++_iter228)
     {
-      xfer += oprot->writeI32((int32_t)(*_iter222));
+      xfer += oprot->writeI32((int32_t)(*_iter228));
     }
     xfer += oprot->writeSetEnd();
   }
@@ -1297,10 +1297,10 @@ uint32_t AccumuloProxy_checkIteratorConflicts_pargs::write(::apache::thrift::pro
   xfer += oprot->writeFieldBegin("scopes", ::apache::thrift::protocol::T_SET, 4);
   {
     xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_I32, static_cast<uint32_t>((*(this->scopes)).size()));
-    std::set<IteratorScope::type> ::const_iterator _iter223;
-    for (_iter223 = (*(this->scopes)).begin(); _iter223 != (*(this->scopes)).end(); ++_iter223)
+    std::set<IteratorScope::type> ::const_iterator _iter229;
+    for (_iter229 = (*(this->scopes)).begin(); _iter229 != (*(this->scopes)).end(); ++_iter229)
     {
-      xfer += oprot->writeI32((int32_t)(*_iter223));
+      xfer += oprot->writeI32((int32_t)(*_iter229));
     }
     xfer += oprot->writeSetEnd();
   }
@@ -1724,17 +1724,17 @@ uint32_t AccumuloProxy_cloneTable_args::read(::apache::thrift::protocol::TProtoc
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             this->propertiesToSet.clear();
-            uint32_t _size224;
-            ::apache::thrift::protocol::TType _ktype225;
-            ::apache::thrift::protocol::TType _vtype226;
-            xfer += iprot->readMapBegin(_ktype225, _vtype226, _size224);
-            uint32_t _i228;
-            for (_i228 = 0; _i228 < _size224; ++_i228)
+            uint32_t _size230;
+            ::apache::thrift::protocol::TType _ktype231;
+            ::apache::thrift::protocol::TType _vtype232;
+            xfer += iprot->readMapBegin(_ktype231, _vtype232, _size230);
+            uint32_t _i234;
+            for (_i234 = 0; _i234 < _size230; ++_i234)
             {
-              std::string _key229;
-              xfer += iprot->readString(_key229);
-              std::string& _val230 = this->propertiesToSet[_key229];
-              xfer += iprot->readString(_val230);
+              std::string _key235;
+              xfer += iprot->readString(_key235);
+              std::string& _val236 = this->propertiesToSet[_key235];
+              xfer += iprot->readString(_val236);
             }
             xfer += iprot->readMapEnd();
           }
@@ -1747,15 +1747,15 @@ uint32_t AccumuloProxy_cloneTable_args::read(::apache::thrift::protocol::TProtoc
         if (ftype == ::apache::thrift::protocol::T_SET) {
           {
             this->propertiesToExclude.clear();
-            uint32_t _size231;
-            ::apache::thrift::protocol::TType _etype234;
-            xfer += iprot->readSetBegin(_etype234, _size231);
-            uint32_t _i235;
-            for (_i235 = 0; _i235 < _size231; ++_i235)
+            uint32_t _size237;
+            ::apache::thrift::protocol::TType _etype240;
+            xfer += iprot->readSetBegin(_etype240, _size237);
+            uint32_t _i241;
+            for (_i241 = 0; _i241 < _size237; ++_i241)
             {
-              std::string _elem236;
-              xfer += iprot->readString(_elem236);
-              this->propertiesToExclude.insert(_elem236);
+              std::string _elem242;
+              xfer += iprot->readString(_elem242);
+              this->propertiesToExclude.insert(_elem242);
             }
             xfer += iprot->readSetEnd();
           }
@@ -1800,11 +1800,11 @@ uint32_t AccumuloProxy_cloneTable_args::write(::apache::thrift::protocol::TProto
   xfer += oprot->writeFieldBegin("propertiesToSet", ::apache::thrift::protocol::T_MAP, 5);
   {
     xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->propertiesToSet.size()));
-    std::map<std::string, std::string> ::const_iterator _iter237;
-    for (_iter237 = this->propertiesToSet.begin(); _iter237 != this->propertiesToSet.end(); ++_iter237)
+    std::map<std::string, std::string> ::const_iterator _iter243;
+    for (_iter243 = this->propertiesToSet.begin(); _iter243 != this->propertiesToSet.end(); ++_iter243)
     {
-      xfer += oprot->writeString(_iter237->first);
-      xfer += oprot->writeString(_iter237->second);
+      xfer += oprot->writeString(_iter243->first);
+      xfer += oprot->writeString(_iter243->second);
     }
     xfer += oprot->writeMapEnd();
   }
@@ -1813,10 +1813,10 @@ uint32_t AccumuloProxy_cloneTable_args::write(::apache::thrift::protocol::TProto
   xfer += oprot->writeFieldBegin("propertiesToExclude", ::apache::thrift::protocol::T_SET, 6);
   {
     xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->propertiesToExclude.size()));
-    std::set<std::string> ::const_iterator _iter238;
-    for (_iter238 = this->propertiesToExclude.begin(); _iter238 != this->propertiesToExclude.end(); ++_iter238)
+    std::set<std::string> ::const_iterator _iter244;
+    for (_iter244 = this->propertiesToExclude.begin(); _iter244 != this->propertiesToExclude.end(); ++_iter244)
     {
-      xfer += oprot->writeString((*_iter238));
+      xfer += oprot->writeString((*_iter244));
     }
     xfer += oprot->writeSetEnd();
   }
@@ -1856,11 +1856,11 @@ uint32_t AccumuloProxy_cloneTable_pargs::write(::apache::thrift::protocol::TProt
   xfer += oprot->writeFieldBegin("propertiesToSet", ::apache::thrift::protocol::T_MAP, 5);
   {
     xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_STRING, static_cast<uint32_t>((*(this->propertiesToSet)).size()));
-    std::map<std::string, std::string> ::const_iterator _iter239;
-    for (_iter239 = (*(this->propertiesToSet)).begin(); _iter239 != (*(this->propertiesToSet)).end(); ++_iter239)
+    std::map<std::string, std::string> ::const_iterator _iter245;
+    for (_iter245 = (*(this->propertiesToSet)).begin(); _iter245 != (*(this->propertiesToSet)).end(); ++_iter245)
     {
-      xfer += oprot->writeString(_iter239->first);
-      xfer += oprot->writeString(_iter239->second);
+      xfer += oprot->writeString(_iter245->first);
+      xfer += oprot->writeString(_iter245->second);
     }
     xfer += oprot->writeMapEnd();
   }
@@ -1869,10 +1869,10 @@ uint32_t AccumuloProxy_cloneTable_pargs::write(::apache::thrift::protocol::TProt
   xfer += oprot->writeFieldBegin("propertiesToExclude", ::apache::thrift::protocol::T_SET, 6);
   {
     xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>((*(this->propertiesToExclude)).size()));
-    std::set<std::string> ::const_iterator _iter240;
-    for (_iter240 = (*(this->propertiesToExclude)).begin(); _iter240 != (*(this->propertiesToExclude)).end(); ++_iter240)
+    std::set<std::string> ::const_iterator _iter246;
+    for (_iter246 = (*(this->propertiesToExclude)).begin(); _iter246 != (*(this->propertiesToExclude)).end(); ++_iter246)
     {
-      xfer += oprot->writeString((*_iter240));
+      xfer += oprot->writeString((*_iter246));
     }
     xfer += oprot->writeSetEnd();
   }
@@ -2113,14 +2113,14 @@ uint32_t AccumuloProxy_compactTable_args::read(::apache::thrift::protocol::TProt
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->iterators.clear();
-            uint32_t _size241;
-            ::apache::thrift::protocol::TType _etype244;
-            xfer += iprot->readListBegin(_etype244, _size241);
-            this->iterators.resize(_size241);
-            uint32_t _i245;
-            for (_i245 = 0; _i245 < _size241; ++_i245)
+            uint32_t _size247;
+            ::apache::thrift::protocol::TType _etype250;
+            xfer += iprot->readListBegin(_etype250, _size247);
+            this->iterators.resize(_size247);
+            uint32_t _i251;
+            for (_i251 = 0; _i251 < _size247; ++_i251)
             {
-              xfer += this->iterators[_i245].read(iprot);
+              xfer += this->iterators[_i251].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -2189,10 +2189,10 @@ uint32_t AccumuloProxy_compactTable_args::write(::apache::thrift::protocol::TPro
   xfer += oprot->writeFieldBegin("iterators", ::apache::thrift::protocol::T_LIST, 5);
   {
     xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->iterators.size()));
-    std::vector<IteratorSetting> ::const_iterator _iter246;
-    for (_iter246 = this->iterators.begin(); _iter246 != this->iterators.end(); ++_iter246)
+    std::vector<IteratorSetting> ::const_iterator _iter252;
+    for (_iter252 = this->iterators.begin(); _iter252 != this->iterators.end(); ++_iter252)
     {
-      xfer += (*_iter246).write(oprot);
+      xfer += (*_iter252).write(oprot);
     }
     xfer += oprot->writeListEnd();
   }
@@ -2244,10 +2244,10 @@ uint32_t AccumuloProxy_compactTable_pargs::write(::apache::thrift::protocol::TPr
   xfer += oprot->writeFieldBegin("iterators", ::apache::thrift::protocol::T_LIST, 5);
   {
     xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>((*(this->iterators)).size()));
-    std::vector<IteratorSetting> ::const_iterator _iter247;
-    for (_iter247 = (*(this->iterators)).begin(); _iter247 != (*(this->iterators)).end(); ++_iter247)
+    std::vector<IteratorSetting> ::const_iterator _iter253;
+    for (_iter253 = (*(this->iterators)).begin(); _iter253 != (*(this->iterators)).end(); ++_iter253)
     {
-      xfer += (*_iter247).write(oprot);
+      xfer += (*_iter253).write(oprot);
     }
     xfer += oprot->writeListEnd();
   }
@@ -2713,9 +2713,9 @@ uint32_t AccumuloProxy_createTable_args::read(::apache::thrift::protocol::TProto
         break;
       case 4:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast248;
-          xfer += iprot->readI32(ecast248);
-          this->type = (TimeType::type)ecast248;
+          int32_t ecast254;
+          xfer += iprot->readI32(ecast254);
+          this->type = (TimeType::type)ecast254;
           this->__isset.type = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -4044,15 +4044,15 @@ uint32_t AccumuloProxy_getDiskUsage_args::read(::apache::thrift::protocol::TProt
         if (ftype == ::apache::thrift::protocol::T_SET) {
           {
             this->tables.clear();
-            uint32_t _size249;
-            ::apache::thrift::protocol::TType _etype252;
-            xfer += iprot->readSetBegin(_etype252, _size249);
-            uint32_t _i253;
-            for (_i253 = 0; _i253 < _size249; ++_i253)
+            uint32_t _size255;
+            ::apache::thrift::protocol::TType _etype258;
+            xfer += iprot->readSetBegin(_etype258, _size255);
+            uint32_t _i259;
+            for (_i259 = 0; _i259 < _size255; ++_i259)
             {
-              std::string _elem254;
-              xfer += iprot->readString(_elem254);
-              this->tables.insert(_elem254);
+              std::string _elem260;
+              xfer += iprot->readString(_elem260);
+              this->tables.insert(_elem260);
             }
             xfer += iprot->readSetEnd();
           }
@@ -4085,10 +4085,10 @@ uint32_t AccumuloProxy_getDiskUsage_args::write(::apache::thrift::protocol::TPro
   xfer += oprot->writeFieldBegin("tables", ::apache::thrift::protocol::T_SET, 2);
   {
     xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->tables.size()));
-    std::set<std::string> ::const_iterator _iter255;
-    for (_iter255 = this->tables.begin(); _iter255 != this->tables.end(); ++_iter255)
+    std::set<std::string> ::const_iterator _iter261;
+    for (_iter261 = this->tables.begin(); _iter261 != this->tables.end(); ++_iter261)
     {
-      xfer += oprot->writeString((*_iter255));
+      xfer += oprot->writeString((*_iter261));
     }
     xfer += oprot->writeSetEnd();
   }
@@ -4116,10 +4116,10 @@ uint32_t AccumuloProxy_getDiskUsage_pargs::write(::apache::thrift::protocol::TPr
   xfer += oprot->writeFieldBegin("tables", ::apache::thrift::protocol::T_SET, 2);
   {
     xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>((*(this->tables)).size()));
-    std::set<std::string> ::const_iterator _iter256;
-    for (_iter256 = (*(this->tables)).begin(); _iter256 != (*(this->tables)).end(); ++_iter256)
+    std::set<std::string> ::const_iterator _iter262;
+    for (_iter262 = (*(this->tables)).begin(); _iter262 != (*(this->tables)).end(); ++_iter262)
     {
-      xfer += oprot->writeString((*_iter256));
+      xfer += oprot->writeString((*_iter262));
     }
     xfer += oprot->writeSetEnd();
   }
@@ -4160,14 +4160,14 @@ uint32_t AccumuloProxy_getDiskUsage_result::read(::apache::thrift::protocol::TPr
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->success.clear();
-            uint32_t _size257;
-            ::apache::thrift::protocol::TType _etype260;
-            xfer += iprot->readListBegin(_etype260, _size257);
-            this->success.resize(_size257);
-            uint32_t _i261;
-            for (_i261 = 0; _i261 < _size257; ++_i261)
+            uint32_t _size263;
+            ::apache::thrift::protocol::TType _etype266;
+            xfer += iprot->readListBegin(_etype266, _size263);
+            this->success.resize(_size263);
+            uint32_t _i267;
+            for (_i267 = 0; _i267 < _size263; ++_i267)
             {
-              xfer += this->success[_i261].read(iprot);
+              xfer += this->success[_i267].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -4222,10 +4222,10 @@ uint32_t AccumuloProxy_getDiskUsage_result::write(::apache::thrift::protocol::TP
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
-      std::vector<DiskUsage> ::const_iterator _iter262;
-      for (_iter262 = this->success.begin(); _iter262 != this->success.end(); ++_iter262)
+      std::vector<DiskUsage> ::const_iterator _iter268;
+      for (_iter268 = this->success.begin(); _iter268 != this->success.end(); ++_iter268)
       {
-        xfer += (*_iter262).write(oprot);
+        xfer += (*_iter268).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -4278,14 +4278,14 @@ uint32_t AccumuloProxy_getDiskUsage_presult::read(::apache::thrift::protocol::TP
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             (*(this->success)).clear();
-            uint32_t _size263;
-            ::apache::thrift::protocol::TType _etype266;
-            xfer += iprot->readListBegin(_etype266, _size263);
-            (*(this->success)).resize(_size263);
-            uint32_t _i267;
-            for (_i267 = 0; _i267 < _size263; ++_i267)
+            uint32_t _size269;
+            ::apache::thrift::protocol::TType _etype272;
+            xfer += iprot->readListBegin(_etype272, _size269);
+            (*(this->success)).resize(_size269);
+            uint32_t _i273;
+            for (_i273 = 0; _i273 < _size269; ++_i273)
             {
-              xfer += (*(this->success))[_i267].read(iprot);
+              xfer += (*(this->success))[_i273].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -4455,27 +4455,27 @@ uint32_t AccumuloProxy_getLocalityGroups_result::read(::apache::thrift::protocol
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             this->success.clear();
-            uint32_t _size268;
-            ::apache::thrift::protocol::TType _ktype269;
-            ::apache::thrift::protocol::TType _vtype270;
-            xfer += iprot->readMapBegin(_ktype269, _vtype270, _size268);
-            uint32_t _i272;
-            for (_i272 = 0; _i272 < _size268; ++_i272)
+            uint32_t _size274;
+            ::apache::thrift::protocol::TType _ktype275;
+            ::apache::thrift::protocol::TType _vtype276;
+            xfer += iprot->readMapBegin(_ktype275, _vtype276, _size274);
+            uint32_t _i278;
+            for (_i278 = 0; _i278 < _size274; ++_i278)
             {
-              std::string _key273;
-              xfer += iprot->readString(_key273);
-              std::set<std::string> & _val274 = this->success[_key273];
+              std::string _key279;
+              xfer += iprot->readString(_key279);
+              std::set<std::string> & _val280 = this->success[_key279];
               {
-                _val274.clear();
-                uint32_t _size275;
-                ::apache::thrift::protocol::TType _etype278;
-                xfer += iprot->readSetBegin(_etype278, _size275);
-                uint32_t _i279;
-                for (_i279 = 0; _i279 < _size275; ++_i279)
+                _val280.clear();
+                uint32_t _size281;
+                ::apache::thrift::protocol::TType _etype284;
+                xfer += iprot->readSetBegin(_etype284, _size281);
+                uint32_t _i285;
+                for (_i285 = 0; _i285 < _size281; ++_i285)
                 {
-                  std::string _elem280;
-                  xfer += iprot->readString(_elem280);
-                  _val274.insert(_elem280);
+                  std::string _elem286;
+                  xfer += iprot->readString(_elem286);
+                  _val280.insert(_elem286);
                 }
                 xfer += iprot->readSetEnd();
               }
@@ -4533,16 +4533,16 @@ uint32_t AccumuloProxy_getLocalityGroups_result::write(::apache::thrift::protoco
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_MAP, 0);
     {
       xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_SET, static_cast<uint32_t>(this->success.size()));
-      std::map<std::string, std::set<std::string> > ::const_iterator _iter281;
-      for (_iter281 = this->success.begin(); _iter281 != this->success.end(); ++_iter281)
+      std::map<std::string, std::set<std::string> > ::const_iterator _iter287;
+      for (_iter287 = this->success.begin(); _iter287 != this->success.end(); ++_iter287)
       {
-        xfer += oprot->writeString(_iter281->first);
+        xfer += oprot->writeString(_iter287->first);
         {
-          xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(_iter281->second.size()));
-          std::set<std::string> ::const_iterator _iter282;
-          for (_iter282 = _iter281->second.begin(); _iter282 != _iter281->second.end(); ++_iter282)
+          xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(_iter287->second.size()));
+          std::set<std::string> ::const_iterator _iter288;
+          for (_iter288 = _iter287->second.begin(); _iter288 != _iter287->second.end(); ++_iter288)
           {
-            xfer += oprot->writeString((*_iter282));
+            xfer += oprot->writeString((*_iter288));
           }
           xfer += oprot->writeSetEnd();
         }
@@ -4598,27 +4598,27 @@ uint32_t AccumuloProxy_getLocalityGroups_presult::read(::apache::thrift::protoco
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             (*(this->success)).clear();
-            uint32_t _size283;
-            ::apache::thrift::protocol::TType _ktype284;
-            ::apache::thrift::protocol::TType _vtype285;
-            xfer += iprot->readMapBegin(_ktype284, _vtype285, _size283);
-            uint32_t _i287;
-            for (_i287 = 0; _i287 < _size283; ++_i287)
+            uint32_t _size289;
+            ::apache::thrift::protocol::TType _ktype290;
+            ::apache::thrift::protocol::TType _vtype291;
+            xfer += iprot->readMapBegin(_ktype290, _vtype291, _size289);
+            uint32_t _i293;
+            for (_i293 = 0; _i293 < _size289; ++_i293)
             {
-              std::string _key288;
-              xfer += iprot->readString(_key288);
-              std::set<std::string> & _val289 = (*(this->success))[_key288];
+              std::string _key294;
+              xfer += iprot->readString(_key294);
+              std::set<std::string> & _val295 = (*(this->success))[_key294];
               {
-                _val289.clear();
-                uint32_t _size290;
-                ::apache::thrift::protocol::TType _etype293;
-                xfer += iprot->readSetBegin(_etype293, _size290);
-                uint32_t _i294;
-                for (_i294 = 0; _i294 < _size290; ++_i294)
+                _val295.clear();
+                uint32_t _size296;
+                ::apache::thrift::protocol::TType _etype299;
+                xfer += iprot->readSetBegin(_etype299, _size296);
+                uint32_t _i300;
+                for (_i300 = 0; _i300 < _size296; ++_i300)
                 {
-                  std::string _elem295;
-                  xfer += iprot->readString(_elem295);
-                  _val289.insert(_elem295);
+                  std::string _elem301;
+                  xfer += iprot->readString(_elem301);
+                  _val295.insert(_elem301);
                 }
                 xfer += iprot->readSetEnd();
               }
@@ -4718,9 +4718,9 @@ uint32_t AccumuloProxy_getIteratorSetting_args::read(::apache::thrift::protocol:
         break;
       case 4:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast296;
-          xfer += iprot->readI32(ecast296);
-          this->scope = (IteratorScope::type)ecast296;
+          int32_t ecast302;
+          xfer += iprot->readI32(ecast302);
+          this->scope = (IteratorScope::type)ecast302;
           this->__isset.scope = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -5009,15 +5009,15 @@ uint32_t AccumuloProxy_getMaxRow_args::read(::apache::thrift::protocol::TProtoco
         if (ftype == ::apache::thrift::protocol::T_SET) {
           {
             this->auths.clear();
-            uint32_t _size297;
-            ::apache::thrift::protocol::TType _etype300;
-            xfer += iprot->readSetBegin(_etype300, _size297);
-            uint32_t _i301;
-            for (_i301 = 0; _i301 < _size297; ++_i301)
+            uint32_t _size303;
+            ::apache::thrift::protocol::TType _etype306;
+            xfer += iprot->readSetBegin(_etype306, _size303);
+            uint32_t _i307;
+            for (_i307 = 0; _i307 < _size303; ++_i307)
             {
-              std::string _elem302;
-              xfer += iprot->readBinary(_elem302);
-              this->auths.insert(_elem302);
+              std::string _elem308;
+              xfer += iprot->readBinary(_elem308);
+              this->auths.insert(_elem308);
             }
             xfer += iprot->readSetEnd();
           }
@@ -5086,10 +5086,10 @@ uint32_t AccumuloProxy_getMaxRow_args::write(::apache::thrift::protocol::TProtoc
   xfer += oprot->writeFieldBegin("auths", ::apache::thrift::protocol::T_SET, 3);
   {
     xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->auths.size()));
-    std::set<std::string> ::const_iterator _iter303;
-    for (_iter303 = this->auths.begin(); _iter303 != this->auths.end(); ++_iter303)
+    std::set<std::string> ::const_iterator _iter309;
+    for (_iter309 = this->auths.begin(); _iter309 != this->auths.end(); ++_iter309)
     {
-      xfer += oprot->writeBinary((*_iter303));
+      xfer += oprot->writeBinary((*_iter309));
     }
     xfer += oprot->writeSetEnd();
   }
@@ -5137,10 +5137,10 @@ uint32_t AccumuloProxy_getMaxRow_pargs::write(::apache::thrift::protocol::TProto
   xfer += oprot->writeFieldBegin("auths", ::apache::thrift::protocol::T_SET, 3);
   {
     xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>((*(this->auths)).size()));
-    std::set<std::string> ::const_iterator _iter304;
-    for (_iter304 = (*(this->auths)).begin(); _iter304 != (*(this->auths)).end(); ++_iter304)
+    std::set<std::string> ::const_iterator _iter310;
+    for (_iter310 = (*(this->auths)).begin(); _iter310 != (*(this->auths)).end(); ++_iter310)
     {
-      xfer += oprot->writeBinary((*_iter304));
+      xfer += oprot->writeBinary((*_iter310));
     }
     xfer += oprot->writeSetEnd();
   }
@@ -5460,17 +5460,17 @@ uint32_t AccumuloProxy_getTableProperties_result::read(::apache::thrift::protoco
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             this->success.clear();
-            uint32_t _size305;
-            ::apache::thrift::protocol::TType _ktype306;
-            ::apache::thrift::protocol::TType _vtype307;
-            xfer += iprot->readMapBegin(_ktype306, _vtype307, _size305);
-            uint32_t _i309;
-            for (_i309 = 0; _i309 < _size305; ++_i309)
+            uint32_t _size311;
+            ::apache::thrift::protocol::TType _ktype312;
+            ::apache::thrift::protocol::TType _vtype313;
+            xfer += iprot->readMapBegin(_ktype312, _vtype313, _size311);
+            uint32_t _i315;
+            for (_i315 = 0; _i315 < _size311; ++_i315)
             {
-              std::string _key310;
-              xfer += iprot->readString(_key310);
-              std::string& _val311 = this->success[_key310];
-              xfer += iprot->readString(_val311);
+              std::string _key316;
+              xfer += iprot->readString(_key316);
+              std::string& _val317 = this->success[_key316];
+              xfer += iprot->readString(_val317);
             }
             xfer += iprot->readMapEnd();
           }
@@ -5525,11 +5525,11 @@ uint32_t AccumuloProxy_getTableProperties_result::write(::apache::thrift::protoc
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_MAP, 0);
     {
       xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->success.size()));
-      std::map<std::string, std::string> ::const_iterator _iter312;
-      for (_iter312 = this->success.begin(); _iter312 != this->success.end(); ++_iter312)
+      std::map<std::string, std::string> ::const_iterator _iter318;
+      for (_iter318 = this->success.begin(); _iter318 != this->success.end(); ++_iter318)
       {
-        xfer += oprot->writeString(_iter312->first);
-        xfer += oprot->writeString(_iter312->second);
+        xfer += oprot->writeString(_iter318->first);
+        xfer += oprot->writeString(_iter318->second);
       }
       xfer += oprot->writeMapEnd();
     }
@@ -5582,17 +5582,17 @@ uint32_t AccumuloProxy_getTableProperties_presult::read(::apache::thrift::protoc
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             (*(this->success)).clear();
-            uint32_t _size313;
-            ::apache::thrift::protocol::TType _ktype314;
-            ::apache::thrift::protocol::TType _vtype315;
-            xfer += iprot->readMapBegin(_ktype314, _vtype315, _size313);
-            uint32_t _i317;
-            for (_i317 = 0; _i317 < _size313; ++_i317)
+            uint32_t _size319;
+            ::apache::thrift::protocol::TType _ktype320;
+            ::apache::thrift::protocol::TType _vtype321;
+            xfer += iprot->readMapBegin(_ktype320, _vtype321, _size319);
+            uint32_t _i323;
+            for (_i323 = 0; _i323 < _size319; ++_i323)
             {
-              std::string _key318;
-              xfer += iprot->readString(_key318);
-              std::string& _val319 = (*(this->success))[_key318];
-              xfer += iprot->readString(_val319);
+              std::string _key324;
+              xfer += iprot->readString(_key324);
+              std::string& _val325 = (*(this->success))[_key324];
+              xfer += iprot->readString(_val325);
             }
             xfer += iprot->readMapEnd();
           }
@@ -6328,14 +6328,14 @@ uint32_t AccumuloProxy_listSplits_result::read(::apache::thrift::protocol::TProt
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->success.clear();
-            uint32_t _size320;
-            ::apache::thrift::protocol::TType _etype323;
-            xfer += iprot->readListBegin(_etype323, _size320);
-            this->success.resize(_size320);
-            uint32_t _i324;
-            for (_i324 = 0; _i324 < _size320; ++_i324)
+            uint32_t _size326;
+            ::apache::thrift::protocol::TType _etype329;
+            xfer += iprot->readListBegin(_etype329, _size326);
+            this->success.resize(_size326);
+            uint32_t _i330;
+            for (_i330 = 0; _i330 < _size326; ++_i330)
             {
-              xfer += iprot->readBinary(this->success[_i324]);
+              xfer += iprot->readBinary(this->success[_i330]);
             }
             xfer += iprot->readListEnd();
           }
@@ -6390,10 +6390,10 @@ uint32_t AccumuloProxy_listSplits_result::write(::apache::thrift::protocol::TPro
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->success.size()));
-      std::vector<std::string> ::const_iterator _iter325;
-      for (_iter325 = this->success.begin(); _iter325 != this->success.end(); ++_iter325)
+      std::vector<std::string> ::const_iterator _iter331;
+      for (_iter331 = this->success.begin(); _iter331 != this->success.end(); ++_iter331)
       {
-        xfer += oprot->writeBinary((*_iter325));
+        xfer += oprot->writeBinary((*_iter331));
       }
       xfer += oprot->writeListEnd();
     }
@@ -6446,14 +6446,14 @@ uint32_t AccumuloProxy_listSplits_presult::read(::apache::thrift::protocol::TPro
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             (*(this->success)).clear();
-            uint32_t _size326;
-            ::apache::thrift::protocol::TType _etype329;
-            xfer += iprot->readListBegin(_etype329, _size326);
-            (*(this->success)).resize(_size326);
-            uint32_t _i330;
-            for (_i330 = 0; _i330 < _size326; ++_i330)
+            uint32_t _size332;
+            ::apache::thrift::protocol::TType _etype335;
+            xfer += iprot->readListBegin(_etype335, _size332);
+            (*(this->success)).resize(_size332);
+            uint32_t _i336;
+            for (_i336 = 0; _i336 < _size332; ++_i336)
             {
-              xfer += iprot->readBinary((*(this->success))[_i330]);
+              xfer += iprot->readBinary((*(this->success))[_i336]);
             }
             xfer += iprot->readListEnd();
           }
@@ -6607,15 +6607,15 @@ uint32_t AccumuloProxy_listTables_result::read(::apache::thrift::protocol::TProt
         if (ftype == ::apache::thrift::protocol::T_SET) {
           {
             this->success.clear();
-            uint32_t _size331;
-            ::apache::thrift::protocol::TType _etype334;
-            xfer += iprot->readSetBegin(_etype334, _size331);
-            uint32_t _i335;
-            for (_i335 = 0; _i335 < _size331; ++_i335)
+            uint32_t _size337;
+            ::apache::thrift::protocol::TType _etype340;
+            xfer += iprot->readSetBegin(_etype340, _size337);
+            uint32_t _i341;
+            for (_i341 = 0; _i341 < _size337; ++_i341)
             {
-              std::string _elem336;
-              xfer += iprot->readString(_elem336);
-              this->success.insert(_elem336);
+              std::string _elem342;
+              xfer += iprot->readString(_elem342);
+              this->success.insert(_elem342);
             }
             xfer += iprot->readSetEnd();
           }
@@ -6646,10 +6646,10 @@ uint32_t AccumuloProxy_listTables_result::write(::apache::thrift::protocol::TPro
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_SET, 0);
     {
       xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->success.size()));
-      std::set<std::string> ::const_iterator _iter337;
-      for (_iter337 = this->success.begin(); _iter337 != this->success.end(); ++_iter337)
+      std::set<std::string> ::const_iterator _iter343;
+      for (_iter343 = this->success.begin(); _iter343 != this->success.end(); ++_iter343)
       {
-        xfer += oprot->writeString((*_iter337));
+        xfer += oprot->writeString((*_iter343));
       }
       xfer += oprot->writeSetEnd();
     }
@@ -6690,15 +6690,15 @@ uint32_t AccumuloProxy_listTables_presult::read(::apache::thrift::protocol::TPro
         if (ftype == ::apache::thrift::protocol::T_SET) {
           {
             (*(this->success)).clear();
-            uint32_t _size338;
-            ::apache::thrift::protocol::TType _etype341;
-            xfer += iprot->readSetBegin(_etype341, _size338);
-            uint32_t _i342;
-            for (_i342 = 0; _i342 < _size338; ++_i342)
+            uint32_t _size344;
+            ::apache::thrift::protocol::TType _etype347;
+            xfer += iprot->readSetBegin(_etype347, _size344);
+            uint32_t _i348;
+            for (_i348 = 0; _i348 < _size344; ++_i348)
             {
-              std::string _elem343;
-              xfer += iprot->readString(_elem343);
-              (*(this->success)).insert(_elem343);
+              std::string _elem349;
+              xfer += iprot->readString(_elem349);
+              (*(this->success)).insert(_elem349);
             }
             xfer += iprot->readSetEnd();
           }
@@ -6844,29 +6844,29 @@ uint32_t AccumuloProxy_listIterators_result::read(::apache::thrift::protocol::TP
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             this->success.clear();
-            uint32_t _size344;
-            ::apache::thrift::protocol::TType _ktype345;
-            ::apache::thrift::protocol::TType _vtype346;
-            xfer += iprot->readMapBegin(_ktype345, _vtype346, _size344);
-            uint32_t _i348;
-            for (_i348 = 0; _i348 < _size344; ++_i348)
+            uint32_t _size350;
+            ::apache::thrift::protocol::TType _ktype351;
+            ::apache::thrift::protocol::TType _vtype352;
+            xfer += iprot->readMapBegin(_ktype351, _vtype352, _size350);
+            uint32_t _i354;
+            for (_i354 = 0; _i354 < _size350; ++_i354)
             {
-              std::string _key349;
-              xfer += iprot->readString(_key349);
-              std::set<IteratorScope::type> & _val350 = this->success[_key349];
+              std::string _key355;
+              xfer += iprot->readString(_key355);
+              std::set<IteratorScope::type> & _val356 = this->success[_key355];
               {
-                _val350.clear();
-                uint32_t _size351;
-                ::apache::thrift::protocol::TType _etype354;
-                xfer += iprot->readSetBegin(_etype354, _size351);
-                uint32_t _i355;
-                for (_i355 = 0; _i355 < _size351; ++_i355)
+                _val356.clear();
+                uint32_t _size357;
+                ::apache::thrift::protocol::TType _etype360;
+                xfer += iprot->readSetBegin(_etype360, _size357);
+                uint32_t _i361;
+                for (_i361 = 0; _i361 < _size357; ++_i361)
                 {
-                  IteratorScope::type _elem356;
-                  int32_t ecast357;
-                  xfer += iprot->readI32(ecast357);
-                  _elem356 = (IteratorScope::type)ecast357;
-                  _val350.insert(_elem356);
+                  IteratorScope::type _elem362;
+                  int32_t ecast363;
+                  xfer += iprot->readI32(ecast363);
+                  _elem362 = (IteratorScope::type)ecast363;
+                  _val356.insert(_elem362);
                 }
                 xfer += iprot->readSetEnd();
               }
@@ -6924,16 +6924,16 @@ uint32_t AccumuloProxy_listIterators_result::write(::apache::thrift::protocol::T
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_MAP, 0);
     {
       xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_SET, static_cast<uint32_t>(this->success.size()));
-      std::map<std::string, std::set<IteratorScope::type> > ::const_iterator _iter358;
-      for (_iter358 = this->success.begin(); _iter358 != this->success.end(); ++_iter358)
+      std::map<std::string, std::set<IteratorScope::type> > ::const_iterator _iter364;
+      for (_iter364 = this->success.begin(); _iter364 != this->success.end(); ++_iter364)
       {
-        xfer += oprot->writeString(_iter358->first);
+        xfer += oprot->writeString(_iter364->first);
         {
-          xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_I32, static_cast<uint32_t>(_iter358->second.size()));
-          std::set<IteratorScope::type> ::const_iterator _iter359;
-          for (_iter359 = _iter358->second.begin(); _iter359 != _iter358->second.end(); ++_iter359)
+          xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_I32, static_cast<uint32_t>(_iter364->second.size()));
+          std::set<IteratorScope::type> ::const_iterator _iter365;
+          for (_iter365 = _iter364->second.begin(); _iter365 != _iter364->second.end(); ++_iter365)
           {
-            xfer += oprot->writeI32((int32_t)(*_iter359));
+            xfer += oprot->writeI32((int32_t)(*_iter365));
           }
           xfer += oprot->writeSetEnd();
         }
@@ -6989,29 +6989,29 @@ uint32_t AccumuloProxy_listIterators_presult::read(::apache::thrift::protocol::T
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             (*(this->success)).clear();
-            uint32_t _size360;
-            ::apache::thrift::protocol::TType _ktype361;
-            ::apache::thrift::protocol::TType _vtype362;
-            xfer += iprot->readMapBegin(_ktype361, _vtype362, _size360);
-            uint32_t _i364;
-            for (_i364 = 0; _i364 < _size360; ++_i364)
+            uint32_t _size366;
+            ::apache::thrift::protocol::TType _ktype367;
+            ::apache::thrift::protocol::TType _vtype368;
+            xfer += iprot->readMapBegin(_ktype367, _vtype368, _size366);
+            uint32_t _i370;
+            for (_i370 = 0; _i370 < _size366; ++_i370)
             {
-              std::string _key365;
-              xfer += iprot->readString(_key365);
-              std::set<IteratorScope::type> & _val366 = (*(this->success))[_key365];
+              std::string _key371;
+              xfer += iprot->readString(_key371);
+              std::set<IteratorScope::type> & _val372 = (*(this->success))[_key371];
               {
-                _val366.clear();
-                uint32_t _size367;
-                ::apache::thrift::protocol::TType _etype370;
-                xfer += iprot->readSetBegin(_etype370, _size367);
-                uint32_t _i371;
-                for (_i371 = 0; _i371 < _size367; ++_i371)
+                _val372.clear();
+                uint32_t _size373;
+                ::apache::thrift::protocol::TType _etype376;
+                xfer += iprot->readSetBegin(_etype376, _size373);
+                uint32_t _i377;
+                for (_i377 = 0; _i377 < _size373; ++_i377)
                 {
-                  IteratorScope::type _elem372;
-                  int32_t ecast373;
-                  xfer += iprot->readI32(ecast373);
-                  _elem372 = (IteratorScope::type)ecast373;
-                  _val366.insert(_elem372);
+                  IteratorScope::type _elem378;
+                  int32_t ecast379;
+                  xfer += iprot->readI32(ecast379);
+                  _elem378 = (IteratorScope::type)ecast379;
+                  _val372.insert(_elem378);
                 }
                 xfer += iprot->readSetEnd();
               }
@@ -7184,17 +7184,17 @@ uint32_t AccumuloProxy_listConstraints_result::read(::apache::thrift::protocol::
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             this->success.clear();
-            uint32_t _size374;
-            ::apache::thrift::protocol::TType _ktype375;
-            ::apache::thrift::protocol::TType _vtype376;
-            xfer += iprot->readMapBegin(_ktype375, _vtype376, _size374);
-            uint32_t _i378;
-            for (_i378 = 0; _i378 < _size374; ++_i378)
+            uint32_t _size380;
+            ::apache::thrift::protocol::TType _ktype381;
+            ::apache::thrift::protocol::TType _vtype382;
+            xfer += iprot->readMapBegin(_ktype381, _vtype382, _size380);
+            uint32_t _i384;
+            for (_i384 = 0; _i384 < _size380; ++_i384)
             {
-              std::string _key379;
-              xfer += iprot->readString(_key379);
-              int32_t& _val380 = this->success[_key379];
-              xfer += iprot->readI32(_val380);
+              std::string _key385;
+              xfer += iprot->readString(_key385);
+              int32_t& _val386 = this->success[_key385];
+              xfer += iprot->readI32(_val386);
             }
             xfer += iprot->readMapEnd();
           }
@@ -7249,11 +7249,11 @@ uint32_t AccumuloProxy_listConstraints_result::write(::apache::thrift::protocol:
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_MAP, 0);
     {
       xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_I32, static_cast<uint32_t>(this->success.size()));
-      std::map<std::string, int32_t> ::const_iterator _iter381;
-      for (_iter381 = this->success.begin(); _iter381 != this->success.end(); ++_iter381)
+      std::map<std::string, int32_t> ::const_iterator _iter387;
+      for (_iter387 = this->success.begin(); _iter387 != this->success.end(); ++_iter387)
       {
-        xfer += oprot->writeString(_iter381->first);
-        xfer += oprot->writeI32(_iter381->second);
+        xfer += oprot->writeString(_iter387->first);
+        xfer += oprot->writeI32(_iter387->second);
       }
       xfer += oprot->writeMapEnd();
     }
@@ -7306,17 +7306,17 @@ uint32_t AccumuloProxy_listConstraints_presult::read(::apache::thrift::protocol:
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             (*(this->success)).clear();
-            uint32_t _size382;
-            ::apache::thrift::protocol::TType _ktype383;
-            ::apache::thrift::protocol::TType _vtype384;
-            xfer += iprot->readMapBegin(_ktype383, _vtype384, _size382);
-            uint32_t _i386;
-            for (_i386 = 0; _i386 < _size382; ++_i386)
+            uint32_t _size388;
+            ::apache::thrift::protocol::TType _ktype389;
+            ::apache::thrift::protocol::TType _vtype390;
+            xfer += iprot->readMapBegin(_ktype389, _vtype390, _size388);
+            uint32_t _i392;
+            for (_i392 = 0; _i392 < _size388; ++_i392)
             {
-              std::string _key387;
-              xfer += iprot->readString(_key387);
-              int32_t& _val388 = (*(this->success))[_key387];
-              xfer += iprot->readI32(_val388);
+              std::string _key393;
+              xfer += iprot->readString(_key393);
+              int32_t& _val394 = (*(this->success))[_key393];
+              xfer += iprot->readI32(_val394);
             }
             xfer += iprot->readMapEnd();
           }
@@ -8467,17 +8467,17 @@ uint32_t AccumuloProxy_removeIterator_args::read(::apache::thrift::protocol::TPr
         if (ftype == ::apache::thrift::protocol::T_SET) {
           {
             this->scopes.clear();
-            uint32_t _size389;
-            ::apache::thrift::protocol::TType _etype392;
-            xfer += iprot->readSetBegin(_etype392, _size389);
-            uint32_t _i393;
-            for (_i393 = 0; _i393 < _size389; ++_i393)
+            uint32_t _size395;
+            ::apache::thrift::protocol::TType _etype398;
+            xfer += iprot->readSetBegin(_etype398, _size395);
+            uint32_t _i399;
+            for (_i399 = 0; _i399 < _size395; ++_i399)
             {
-              IteratorScope::type _elem394;
-              int32_t ecast395;
-              xfer += iprot->readI32(ecast395);
-              _elem394 = (IteratorScope::type)ecast395;
-              this->scopes.insert(_elem394);
+              IteratorScope::type _elem400;
+              int32_t ecast401;
+              xfer += iprot->readI32(ecast401);
+              _elem400 = (IteratorScope::type)ecast401;
+              this->scopes.insert(_elem400);
             }
             xfer += iprot->readSetEnd();
           }
@@ -8518,10 +8518,10 @@ uint32_t AccumuloProxy_removeIterator_args::write(::apache::thrift::protocol::TP
   xfer += oprot->writeFieldBegin("scopes", ::apache::thrift::protocol::T_SET, 4);
   {
     xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_I32, static_cast<uint32_t>(this->scopes.size()));
-    std::set<IteratorScope::type> ::const_iterator _iter396;
-    for (_iter396 = this->scopes.begin(); _iter396 != this->scopes.end(); ++_iter396)
+    std::set<IteratorScope::type> ::const_iterator _iter402;
+    for (_iter402 = this->scopes.begin(); _iter402 != this->scopes.end(); ++_iter402)
     {
-      xfer += oprot->writeI32((int32_t)(*_iter396));
+      xfer += oprot->writeI32((int32_t)(*_iter402));
     }
     xfer += oprot->writeSetEnd();
   }
@@ -8557,10 +8557,10 @@ uint32_t AccumuloProxy_removeIterator_pargs::write(::apache::thrift::protocol::T
   xfer += oprot->writeFieldBegin("scopes", ::apache::thrift::protocol::T_SET, 4);
   {
     xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_I32, static_cast<uint32_t>((*(this->scopes)).size()));
-    std::set<IteratorScope::type> ::const_iterator _iter397;
-    for (_iter397 = (*(this->scopes)).begin(); _iter397 != (*(this->scopes)).end(); ++_iter397)
+    std::set<IteratorScope::type> ::const_iterator _iter403;
+    for (_iter403 = (*(this->scopes)).begin(); _iter403 != (*(this->scopes)).end(); ++_iter403)
     {
-      xfer += oprot->writeI32((int32_t)(*_iter397));
+      xfer += oprot->writeI32((int32_t)(*_iter403));
     }
     xfer += oprot->writeSetEnd();
   }
@@ -9303,27 +9303,27 @@ uint32_t AccumuloProxy_setLocalityGroups_args::read(::apache::thrift::protocol::
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             this->groups.clear();
-            uint32_t _size398;
-            ::apache::thrift::protocol::TType _ktype399;
-            ::apache::thrift::protocol::TType _vtype400;
-            xfer += iprot->readMapBegin(_ktype399, _vtype400, _size398);
-            uint32_t _i402;
-            for (_i402 = 0; _i402 < _size398; ++_i402)
+            uint32_t _size404;
+            ::apache::thrift::protocol::TType _ktype405;
+            ::apache::thrift::protocol::TType _vtype406;
+            xfer += iprot->readMapBegin(_ktype405, _vtype406, _size404);
+            uint32_t _i408;
+            for (_i408 = 0; _i408 < _size404; ++_i408)
             {
-              std::string _key403;
-              xfer += iprot->readString(_key403);
-              std::set<std::string> & _val404 = this->groups[_key403];
+              std::string _key409;
+              xfer += iprot->readString(_key409);
+              std::set<std::string> & _val410 = this->groups[_key409];
               {
-                _val404.clear();
-                uint32_t _size405;
-                ::apache::thrift::protocol::TType _etype408;
-                xfer += iprot->readSetBegin(_etype408, _size405);
-                uint32_t _i409;
-                for (_i409 = 0; _i409 < _size405; ++_i409)
+                _val410.clear();
+                uint32_t _size411;
+                ::apache::thrift::protocol::TType _etype414;
+                xfer += iprot->readSetBegin(_etype414, _size411);
+                uint32_t _i415;
+                for (_i415 = 0; _i415 < _size411; ++_i415)
                 {
-                  std::string _elem410;
-                  xfer += iprot->readString(_elem410);
-                  _val404.insert(_elem410);
+                  std::string _elem416;
+                  xfer += iprot->readString(_elem416);
+                  _val410.insert(_elem416);
                 }
                 xfer += iprot->readSetEnd();
               }
@@ -9363,16 +9363,16 @@ uint32_t AccumuloProxy_setLocalityGroups_args::write(::apache::thrift::protocol:
   xfer += oprot->writeFieldBegin("groups", ::apache::thrift::protocol::T_MAP, 3);
   {
     xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_SET, static_cast<uint32_t>(this->groups.size()));
-    std::map<std::string, std::set<std::string> > ::const_iterator _iter411;
-    for (_iter411 = this->groups.begin(); _iter411 != this->groups.end(); ++_iter411)
+    std::map<std::string, std::set<std::string> > ::const_iterator _iter417;
+    for (_iter417 = this->groups.begin(); _iter417 != this->groups.end(); ++_iter417)
     {
-      xfer += oprot->writeString(_iter411->first);
+      xfer += oprot->writeString(_iter417->first);
       {
-        xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(_iter411->second.size()));
-        std::set<std::string> ::const_iterator _iter412;
-        for (_iter412 = _iter411->second.begin(); _iter412 != _iter411->second.end(); ++_iter412)
+        xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(_iter417->second.size()));
+        std::set<std::string> ::const_iterator _iter418;
+        for (_iter418 = _iter417->second.begin(); _iter418 != _iter417->second.end(); ++_iter418)
         {
-          xfer += oprot->writeString((*_iter412));
+          xfer += oprot->writeString((*_iter418));
         }
         xfer += oprot->writeSetEnd();
       }
@@ -9407,16 +9407,16 @@ uint32_t AccumuloProxy_setLocalityGroups_pargs::write(::apache::thrift::protocol
   xfer += oprot->writeFieldBegin("groups", ::apache::thrift::protocol::T_MAP, 3);
   {
     xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_SET, static_cast<uint32_t>((*(this->groups)).size()));
-    std::map<std::string, std::set<std::string> > ::const_iterator _iter413;
-    for (_iter413 = (*(this->groups)).begin(); _iter413 != (*(this->groups)).end(); ++_iter413)
+    std::map<std::string, std::set<std::string> > ::const_iterator _iter419;
+    for (_iter419 = (*(this->groups)).begin(); _iter419 != (*(this->groups)).end(); ++_iter419)
     {
-      xfer += oprot->writeString(_iter413->first);
+      xfer += oprot->writeString(_iter419->first);
       {
-        xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(_iter413->second.size()));
-        std::set<std::string> ::const_iterator _iter414;
-        for (_iter414 = _iter413->second.begin(); _iter414 != _iter413->second.end(); ++_iter414)
+        xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(_iter419->second.size()));
+        std::set<std::string> ::const_iterator _iter420;
+        for (_iter420 = _iter419->second.begin(); _iter420 != _iter419->second.end(); ++_iter420)
         {
-          xfer += oprot->writeString((*_iter414));
+          xfer += oprot->writeString((*_iter420));
         }
         xfer += oprot->writeSetEnd();
       }
@@ -10010,15 +10010,15 @@ uint32_t AccumuloProxy_splitRangeByTablets_result::read(::apache::thrift::protoc
         if (ftype == ::apache::thrift::protocol::T_SET) {
           {
             this->success.clear();
-            uint32_t _size415;
-            ::apache::thrift::protocol::TType _etype418;
-            xfer += iprot->readSetBegin(_etype418, _size415);
-            uint32_t _i419;
-            for (_i419 = 0; _i419 < _size415; ++_i419)
+            uint32_t _size421;
+            ::apache::thrift::protocol::TType _etype424;
+            xfer += iprot->readSetBegin(_etype424, _size421);
+            uint32_t _i425;
+            for (_i425 = 0; _i425 < _size421; ++_i425)
             {
-              Range _elem420;
-              xfer += _elem420.read(iprot);
-              this->success.insert(_elem420);
+              Range _elem426;
+              xfer += _elem426.read(iprot);
+              this->success.insert(_elem426);
             }
             xfer += iprot->readSetEnd();
           }
@@ -10073,10 +10073,10 @@ uint32_t AccumuloProxy_splitRangeByTablets_result::write(::apache::thrift::proto
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_SET, 0);
     {
       xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
-      std::set<Range> ::const_iterator _iter421;
-      for (_iter421 = this->success.begin(); _iter421 != this->success.end(); ++_iter421)
+      std::set<Range> ::const_iterator _iter427;
+      for (_iter427 = this->success.begin(); _iter427 != this->success.end(); ++_iter427)
       {
-        xfer += (*_iter421).write(oprot);
+        xfer += (*_iter427).write(oprot);
       }
       xfer += oprot->writeSetEnd();
     }
@@ -10129,15 +10129,15 @@ uint32_t AccumuloProxy_splitRangeByTablets_presult::read(::apache::thrift::proto
         if (ftype == ::apache::thrift::protocol::T_SET) {
           {
             (*(this->success)).clear();
-            uint32_t _size422;
-            ::apache::thrift::protocol::TType _etype425;
-            xfer += iprot->readSetBegin(_etype425, _size422);
-            uint32_t _i426;
-            for (_i426 = 0; _i426 < _size422; ++_i426)
+            uint32_t _size428;
+            ::apache::thrift::protocol::TType _etype431;
+            xfer += iprot->readSetBegin(_etype431, _size428);
+            uint32_t _i432;
+            for (_i432 = 0; _i432 < _size428; ++_i432)
             {
-              Range _elem427;
-              xfer += _elem427.read(iprot);
-              (*(this->success)).insert(_elem427);
+              Range _elem433;
+              xfer += _elem433.read(iprot);
+              (*(this->success)).insert(_elem433);
             }
             xfer += iprot->readSetEnd();
           }
@@ -10494,17 +10494,17 @@ uint32_t AccumuloProxy_tableIdMap_result::read(::apache::thrift::protocol::TProt
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             this->success.clear();
-            uint32_t _size428;
-            ::apache::thrift::protocol::TType _ktype429;
-            ::apache::thrift::protocol::TType _vtype430;
-            xfer += iprot->readMapBegin(_ktype429, _vtype430, _size428);
-            uint32_t _i432;
-            for (_i432 = 0; _i432 < _size428; ++_i432)
+            uint32_t _size434;
+            ::apache::thrift::protocol::TType _ktype435;
+            ::apache::thrift::protocol::TType _vtype436;
+            xfer += iprot->readMapBegin(_ktype435, _vtype436, _size434);
+            uint32_t _i438;
+            for (_i438 = 0; _i438 < _size434; ++_i438)
             {
-              std::string _key433;
-              xfer += iprot->readString(_key433);
-              std::string& _val434 = this->success[_key433];
-              xfer += iprot->readString(_val434);
+              std::string _key439;
+              xfer += iprot->readString(_key439);
+              std::string& _val440 = this->success[_key439];
+              xfer += iprot->readString(_val440);
             }
             xfer += iprot->readMapEnd();
           }
@@ -10535,11 +10535,11 @@ uint32_t AccumuloProxy_tableIdMap_result::write(::apache::thrift::protocol::TPro
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_MAP, 0);
     {
       xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->success.size()));
-      std::map<std::string, std::string> ::const_iterator _iter435;
-      for (_iter435 = this->success.begin(); _iter435 != this->success.end(); ++_iter435)
+      std::map<std::string, std::string> ::const_iterator _iter441;
+      for (_iter441 = this->success.begin(); _iter441 != this->success.end(); ++_iter441)
       {
-        xfer += oprot->writeString(_iter435->first);
-        xfer += oprot->writeString(_iter435->second);
+        xfer += oprot->writeString(_iter441->first);
+        xfer += oprot->writeString(_iter441->second);
       }
       xfer += oprot->writeMapEnd();
     }
@@ -10580,17 +10580,17 @@ uint32_t AccumuloProxy_tableIdMap_presult::read(::apache::thrift::protocol::TPro
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             (*(this->success)).clear();
-            uint32_t _size436;
-            ::apache::thrift::protocol::TType _ktype437;
-            ::apache::thrift::protocol::TType _vtype438;
-            xfer += iprot->readMapBegin(_ktype437, _vtype438, _size436);
-            uint32_t _i440;
-            for (_i440 = 0; _i440 < _size436; ++_i440)
+            uint32_t _size442;
+            ::apache::thrift::protocol::TType _ktype443;
+            ::apache::thrift::protocol::TType _vtype444;
+            xfer += iprot->readMapBegin(_ktype443, _vtype444, _size442);
+            uint32_t _i446;
+            for (_i446 = 0; _i446 < _size442; ++_i446)
             {
-              std::string _key441;
-              xfer += iprot->readString(_key441);
-              std::string& _val442 = (*(this->success))[_key441];
-              xfer += iprot->readString(_val442);
+              std::string _key447;
+              xfer += iprot->readString(_key447);
+              std::string& _val448 = (*(this->success))[_key447];
+              xfer += iprot->readString(_val448);
             }
             xfer += iprot->readMapEnd();
           }
@@ -11254,14 +11254,14 @@ uint32_t AccumuloProxy_getActiveScans_result::read(::apache::thrift::protocol::T
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->success.clear();
-            uint32_t _size443;
-            ::apache::thrift::protocol::TType _etype446;
-            xfer += iprot->readListBegin(_etype446, _size443);
-            this->success.resize(_size443);
-            uint32_t _i447;
-            for (_i447 = 0; _i447 < _size443; ++_i447)
+            uint32_t _size449;
+            ::apache::thrift::protocol::TType _etype452;
+            xfer += iprot->readListBegin(_etype452, _size449);
+            this->success.resize(_size449);
+            uint32_t _i453;
+            for (_i453 = 0; _i453 < _size449; ++_i453)
             {
-              xfer += this->success[_i447].read(iprot);
+              xfer += this->success[_i453].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -11308,10 +11308,10 @@ uint32_t AccumuloProxy_getActiveScans_result::write(::apache::thrift::protocol::
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
-      std::vector<ActiveScan> ::const_iterator _iter448;
-      for (_iter448 = this->success.begin(); _iter448 != this->success.end(); ++_iter448)
+      std::vector<ActiveScan> ::const_iterator _iter454;
+      for (_iter454 = this->success.begin(); _iter454 != this->success.end(); ++_iter454)
       {
-        xfer += (*_iter448).write(oprot);
+        xfer += (*_iter454).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -11360,14 +11360,14 @@ uint32_t AccumuloProxy_getActiveScans_presult::read(::apache::thrift::protocol::
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             (*(this->success)).clear();
-            uint32_t _size449;
-            ::apache::thrift::protocol::TType _etype452;
-            xfer += iprot->readListBegin(_etype452, _size449);
-            (*(this->success)).resize(_size449);
-            uint32_t _i453;
-            for (_i453 = 0; _i453 < _size449; ++_i453)
+            uint32_t _size455;
+            ::apache::thrift::protocol::TType _etype458;
+            xfer += iprot->readListBegin(_etype458, _size455);
+            (*(this->success)).resize(_size455);
+            uint32_t _i459;
+            for (_i459 = 0; _i459 < _size455; ++_i459)
             {
-              xfer += (*(this->success))[_i453].read(iprot);
+              xfer += (*(this->success))[_i459].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -11529,14 +11529,14 @@ uint32_t AccumuloProxy_getActiveCompactions_result::read(::apache::thrift::proto
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->success.clear();
-            uint32_t _size454;
-            ::apache::thrift::protocol::TType _etype457;
-            xfer += iprot->readListBegin(_etype457, _size454);
-            this->success.resize(_size454);
-            uint32_t _i458;
-            for (_i458 = 0; _i458 < _size454; ++_i458)
+            uint32_t _size460;
+            ::apache::thrift::protocol::TType _etype463;
+            xfer += iprot->readListBegin(_etype463, _size460);
+            this->success.resize(_size460);
+            uint32_t _i464;
+            for (_i464 = 0; _i464 < _size460; ++_i464)
             {
-              xfer += this->success[_i458].read(iprot);
+              xfer += this->success[_i464].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -11583,10 +11583,10 @@ uint32_t AccumuloProxy_getActiveCompactions_result::write(::apache::thrift::prot
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
-      std::vector<ActiveCompaction> ::const_iterator _iter459;
-      for (_iter459 = this->success.begin(); _iter459 != this->success.end(); ++_iter459)
+      std::vector<ActiveCompaction> ::const_iterator _iter465;
+      for (_iter465 = this->success.begin(); _iter465 != this->success.end(); ++_iter465)
       {
-        xfer += (*_iter459).write(oprot);
+        xfer += (*_iter465).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -11635,14 +11635,14 @@ uint32_t AccumuloProxy_getActiveCompactions_presult::read(::apache::thrift::prot
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             (*(this->success)).clear();
-            uint32_t _size460;
-            ::apache::thrift::protocol::TType _etype463;
-            xfer += iprot->readListBegin(_etype463, _size460);
-            (*(this->success)).resize(_size460);
-            uint32_t _i464;
-            for (_i464 = 0; _i464 < _size460; ++_i464)
+            uint32_t _size466;
+            ::apache::thrift::protocol::TType _etype469;
+            xfer += iprot->readListBegin(_etype469, _size466);
+            (*(this->success)).resize(_size466);
+            uint32_t _i470;
+            for (_i470 = 0; _i470 < _size466; ++_i470)
             {
-              xfer += (*(this->success))[_i464].read(iprot);
+              xfer += (*(this->success))[_i470].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -11788,17 +11788,17 @@ uint32_t AccumuloProxy_getSiteConfiguration_result::read(::apache::thrift::proto
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             this->success.clear();
-            uint32_t _size465;
-            ::apache::thrift::protocol::TType _ktype466;
-            ::apache::thrift::protocol::TType _vtype467;
-            xfer += iprot->readMapBegin(_ktype466, _vtype467, _size465);
-            uint32_t _i469;
-            for (_i469 = 0; _i469 < _size465; ++_i469)
+            uint32_t _size471;
+            ::apache::thrift::protocol::TType _ktype472;
+            ::apache::thrift::protocol::TType _vtype473;
+            xfer += iprot->readMapBegin(_ktype472, _vtype473, _size471);
+            uint32_t _i475;
+            for (_i475 = 0; _i475 < _size471; ++_i475)
             {
-              std::string _key470;
-              xfer += iprot->readString(_key470);
-              std::string& _val471 = this->success[_key470];
-              xfer += iprot->readString(_val471);
+              std::string _key476;
+              xfer += iprot->readString(_key476);
+              std::string& _val477 = this->success[_key476];
+              xfer += iprot->readString(_val477);
             }
             xfer += iprot->readMapEnd();
           }
@@ -11845,11 +11845,11 @@ uint32_t AccumuloProxy_getSiteConfiguration_result::write(::apache::thrift::prot
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_MAP, 0);
     {
       xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->success.size()));
-      std::map<std::string, std::string> ::const_iterator _iter472;
-      for (_iter472 = this->success.begin(); _iter472 != this->success.end(); ++_iter472)
+      std::map<std::string, std::string> ::const_iterator _iter478;
+      for (_iter478 = this->success.begin(); _iter478 != this->success.end(); ++_iter478)
       {
-        xfer += oprot->writeString(_iter472->first);
-        xfer += oprot->writeString(_iter472->second);
+        xfer += oprot->writeString(_iter478->first);
+        xfer += oprot->writeString(_iter478->second);
       }
       xfer += oprot->writeMapEnd();
     }
@@ -11898,17 +11898,17 @@ uint32_t AccumuloProxy_getSiteConfiguration_presult::read(::apache::thrift::prot
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             (*(this->success)).clear();
-            uint32_t _size473;
-            ::apache::thrift::protocol::TType _ktype474;
-            ::apache::thrift::protocol::TType _vtype475;
-            xfer += iprot->readMapBegin(_ktype474, _vtype475, _size473);
-            uint32_t _i477;
-            for (_i477 = 0; _i477 < _size473; ++_i477)
+            uint32_t _size479;
+            ::apache::thrift::protocol::TType _ktype480;
+            ::apache::thrift::protocol::TType _vtype481;
+            xfer += iprot->readMapBegin(_ktype480, _vtype481, _size479);
+            uint32_t _i483;
+            for (_i483 = 0; _i483 < _size479; ++_i483)
             {
-              std::string _key478;
-              xfer += iprot->readString(_key478);
-              std::string& _val479 = (*(this->success))[_key478];
-              xfer += iprot->readString(_val479);
+              std::string _key484;
+              xfer += iprot->readString(_key484);
+              std::string& _val485 = (*(this->success))[_key484];
+              xfer += iprot->readString(_val485);
             }
             xfer += iprot->readMapEnd();
           }
@@ -12054,17 +12054,17 @@ uint32_t AccumuloProxy_getSystemConfiguration_result::read(::apache::thrift::pro
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             this->success.clear();
-            uint32_t _size480;
-            ::apache::thrift::protocol::TType _ktype481;
-            ::apache::thrift::protocol::TType _vtype482;
-            xfer += iprot->readMapBegin(_ktype481, _vtype482, _size480);
-            uint32_t _i484;
-            for (_i484 = 0; _i484 < _size480; ++_i484)
+            uint32_t _size486;
+            ::apache::thrift::protocol::TType _ktype487;
+            ::apache::thrift::protocol::TType _vtype488;
+            xfer += iprot->readMapBegin(_ktype487, _vtype488, _size486);
+            uint32_t _i490;
+            for (_i490 = 0; _i490 < _size486; ++_i490)
             {
-              std::string _key485;
-              xfer += iprot->readString(_key485);
-              std::string& _val486 = this->success[_key485];
-              xfer += iprot->readString(_val486);
+              std::string _key491;
+              xfer += iprot->readString(_key491);
+              std::string& _val492 = this->success[_key491];
+              xfer += iprot->readString(_val492);
             }
             xfer += iprot->readMapEnd();
           }
@@ -12111,11 +12111,11 @@ uint32_t AccumuloProxy_getSystemConfiguration_result::write(::apache::thrift::pr
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_MAP, 0);
     {
       xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->success.size()));
-      std::map<std::string, std::string> ::const_iterator _iter487;
-      for (_iter487 = this->success.begin(); _iter487 != this->success.end(); ++_iter487)
+      std::map<std::string, std::string> ::const_iterator _iter493;
+      for (_iter493 = this->success.begin(); _iter493 != this->success.end(); ++_iter493)
       {
-        xfer += oprot->writeString(_iter487->first);
-        xfer += oprot->writeString(_iter487->second);
+        xfer += oprot->writeString(_iter493->first);
+        xfer += oprot->writeString(_iter493->second);
       }
       xfer += oprot->writeMapEnd();
     }
@@ -12164,17 +12164,17 @@ uint32_t AccumuloProxy_getSystemConfiguration_presult::read(::apache::thrift::pr
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             (*(this->success)).clear();
-            uint32_t _size488;
-            ::apache::thrift::protocol::TType _ktype489;
-            ::apache::thrift::protocol::TType _vtype490;
-            xfer += iprot->readMapBegin(_ktype489, _vtype490, _size488);
-            uint32_t _i492;
-            for (_i492 = 0; _i492 < _size488; ++_i492)
+            uint32_t _size494;
+            ::apache::thrift::protocol::TType _ktype495;
+            ::apache::thrift::protocol::TType _vtype496;
+            xfer += iprot->readMapBegin(_ktype495, _vtype496, _size494);
+            uint32_t _i498;
+            for (_i498 = 0; _i498 < _size494; ++_i498)
             {
-              std::string _key493;
-              xfer += iprot->readString(_key493);
-              std::string& _val494 = (*(this->success))[_key493];
-              xfer += iprot->readString(_val494);
+              std::string _key499;
+              xfer += iprot->readString(_key499);
+              std::string& _val500 = (*(this->success))[_key499];
+              xfer += iprot->readString(_val500);
             }
             xfer += iprot->readMapEnd();
           }
@@ -12320,14 +12320,14 @@ uint32_t AccumuloProxy_getTabletServers_result::read(::apache::thrift::protocol:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->success.clear();
-            uint32_t _size495;
-            ::apache::thrift::protocol::TType _etype498;
-            xfer += iprot->readListBegin(_etype498, _size495);
-            this->success.resize(_size495);
-            uint32_t _i499;
-            for (_i499 = 0; _i499 < _size495; ++_i499)
+            uint32_t _size501;
+            ::apache::thrift::protocol::TType _etype504;
+            xfer += iprot->readListBegin(_etype504, _size501);
+            this->success.resize(_size501);
+            uint32_t _i505;
+            for (_i505 = 0; _i505 < _size501; ++_i505)
             {
-              xfer += iprot->readString(this->success[_i499]);
+              xfer += iprot->readString(this->success[_i505]);
             }
             xfer += iprot->readListEnd();
           }
@@ -12358,10 +12358,10 @@ uint32_t AccumuloProxy_getTabletServers_result::write(::apache::thrift::protocol
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->success.size()));
-      std::vector<std::string> ::const_iterator _iter500;
-      for (_iter500 = this->success.begin(); _iter500 != this->success.end(); ++_iter500)
+      std::vector<std::string> ::const_iterator _iter506;
+      for (_iter506 = this->success.begin(); _iter506 != this->success.end(); ++_iter506)
       {
-        xfer += oprot->writeString((*_iter500));
+        xfer += oprot->writeString((*_iter506));
       }
       xfer += oprot->writeListEnd();
     }
@@ -12402,14 +12402,14 @@ uint32_t AccumuloProxy_getTabletServers_presult::read(::apache::thrift::protocol
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             (*(this->success)).clear();
-            uint32_t _size501;
-            ::apache::thrift::protocol::TType _etype504;
-            xfer += iprot->readListBegin(_etype504, _size501);
-            (*(this->success)).resize(_size501);
-            uint32_t _i505;
-            for (_i505 = 0; _i505 < _size501; ++_i505)
+            uint32_t _size507;
+            ::apache::thrift::protocol::TType _etype510;
+            xfer += iprot->readListBegin(_etype510, _size507);
+            (*(this->success)).resize(_size507);
+            uint32_t _i511;
+            for (_i511 = 0; _i511 < _size507; ++_i511)
             {
-              xfer += iprot->readString((*(this->success))[_i505]);
+              xfer += iprot->readString((*(this->success))[_i511]);
             }
             xfer += iprot->readListEnd();
           }
@@ -13197,17 +13197,17 @@ uint32_t AccumuloProxy_authenticateUser_args::read(::apache::thrift::protocol::T
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             this->properties.clear();
-            uint32_t _size506;
-            ::apache::thrift::protocol::TType _ktype507;
-            ::apache::thrift::protocol::TType _vtype508;
-            xfer += iprot->readMapBegin(_ktype507, _vtype508, _size506);
-            uint32_t _i510;
-            for (_i510 = 0; _i510 < _size506; ++_i510)
+            uint32_t _size512;
+            ::apache::thrift::protocol::TType _ktype513;
+            ::apache::thrift::protocol::TType _vtype514;
+            xfer += iprot->readMapBegin(_ktype513, _vtype514, _size512);
+            uint32_t _i516;
+            for (_i516 = 0; _i516 < _size512; ++_i516)
             {
-              std::string _key511;
-              xfer += iprot->readString(_key511);
-              std::string& _val512 = this->properties[_key511];
-              xfer += iprot->readString(_val512);
+              std::string _key517;
+              xfer += iprot->readString(_key517);
+              std::string& _val518 = this->properties[_key517];
+              xfer += iprot->readString(_val518);
             }
             xfer += iprot->readMapEnd();
           }
@@ -13244,11 +13244,11 @@ uint32_t AccumuloProxy_authenticateUser_args::write(::apache::thrift::protocol::
   xfer += oprot->writeFieldBegin("properties", ::apache::thrift::protocol::T_MAP, 3);
   {
     xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->properties.size()));
-    std::map<std::string, std::string> ::const_iterator _iter513;
-    for (_iter513 = this->properties.begin(); _iter513 != this->properties.end(); ++_iter513)
+    std::map<std::string, std::string> ::const_iterator _iter519;
+    for (_iter519 = this->properties.begin(); _iter519 != this->properties.end(); ++_iter519)
     {
-      xfer += oprot->writeString(_iter513->first);
-      xfer += oprot->writeString(_iter513->second);
+      xfer += oprot->writeString(_iter519->first);
+      xfer += oprot->writeString(_iter519->second);
     }
     xfer += oprot->writeMapEnd();
   }
@@ -13280,11 +13280,11 @@ uint32_t AccumuloProxy_authenticateUser_pargs::write(::apache::thrift::protocol:
   xfer += oprot->writeFieldBegin("properties", ::apache::thrift::protocol::T_MAP, 3);
   {
     xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_STRING, static_cast<uint32_t>((*(this->properties)).size()));
-    std::map<std::string, std::string> ::const_iterator _iter514;
-    for (_iter514 = (*(this->properties)).begin(); _iter514 != (*(this->properties)).end(); ++_iter514)
+    std::map<std::string, std::string> ::const_iterator _iter520;
+    for (_iter520 = (*(this->properties)).begin(); _iter520 != (*(this->properties)).end(); ++_iter520)
     {
-      xfer += oprot->writeString(_iter514->first);
-      xfer += oprot->writeString(_iter514->second);
+      xfer += oprot->writeString(_iter520->first);
+      xfer += oprot->writeString(_iter520->second);
     }
     xfer += oprot->writeMapEnd();
   }
@@ -13489,15 +13489,15 @@ uint32_t AccumuloProxy_changeUserAuthorizations_args::read(::apache::thrift::pro
         if (ftype == ::apache::thrift::protocol::T_SET) {
           {
             this->authorizations.clear();
-            uint32_t _size515;
-            ::apache::thrift::protocol::TType _etype518;
-            xfer += iprot->readSetBegin(_etype518, _size515);
-            uint32_t _i519;
-            for (_i519 = 0; _i519 < _size515; ++_i519)
+            uint32_t _size521;
+            ::apache::thrift::protocol::TType _etype524;
+            xfer += iprot->readSetBegin(_etype524, _size521);
+            uint32_t _i525;
+            for (_i525 = 0; _i525 < _size521; ++_i525)
             {
-              std::string _elem520;
-              xfer += iprot->readBinary(_elem520);
-              this->authorizations.insert(_elem520);
+              std::string _elem526;
+              xfer += iprot->readBinary(_elem526);
+              this->authorizations.insert(_elem526);
             }
             xfer += iprot->readSetEnd();
           }
@@ -13534,10 +13534,10 @@ uint32_t AccumuloProxy_changeUserAuthorizations_args::write(::apache::thrift::pr
   xfer += oprot->writeFieldBegin("authorizations", ::apache::thrift::protocol::T_SET, 3);
   {
     xfer += oprot->writeSetBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->authorizations.size()));
-    std::set<std::string> ::const_iterator _iter521;
-    for (_iter521 = this->authorizations.begin(); _iter521 != this->authorizations.end(); ++_iter521)
+    std::set<std::string> ::const_iterator _iter527;
+    for (_iter527 = this->authorizations.begin(); _iter527 != this->authorizations.end(); ++_iter527)
     {
-      xfer += oprot->writeBinary((*_iter521));
+      xfer += oprot->writeBinary((*_iter527));
     }
     xfer += oprot-

<TRUNCATED>

[3/9] accumulo git commit: ACCUMULO-4147 Add Accumulo Namespace Operations to Proxy

Posted by kt...@apache.org.
http://git-wip-us.apache.org/repos/asf/accumulo/blob/8839fe51/proxy/src/main/python/AccumuloProxy.py
----------------------------------------------------------------------
diff --git a/proxy/src/main/python/AccumuloProxy.py b/proxy/src/main/python/AccumuloProxy.py
index 83c216c..19bd257 100644
--- a/proxy/src/main/python/AccumuloProxy.py
+++ b/proxy/src/main/python/AccumuloProxy.py
@@ -574,6 +574,36 @@ class Iface:
     """
     pass
 
+  def grantNamespacePermission(self, login, user, namespaceName, perm):
+    """
+    Parameters:
+     - login
+     - user
+     - namespaceName
+     - perm
+    """
+    pass
+
+  def hasNamespacePermission(self, login, user, namespaceName, perm):
+    """
+    Parameters:
+     - login
+     - user
+     - namespaceName
+     - perm
+    """
+    pass
+
+  def revokeNamespacePermission(self, login, user, namespaceName, perm):
+    """
+    Parameters:
+     - login
+     - user
+     - namespaceName
+     - perm
+    """
+    pass
+
   def createBatchScanner(self, login, tableName, options):
     """
     Parameters:
@@ -710,6 +740,170 @@ class Iface:
     """
     pass
 
+  def systemNamespace(self):
+    pass
+
+  def defaultNamespace(self):
+    pass
+
+  def listNamespaces(self, login):
+    """
+    Parameters:
+     - login
+    """
+    pass
+
+  def namespaceExists(self, login, namespaceName):
+    """
+    Parameters:
+     - login
+     - namespaceName
+    """
+    pass
+
+  def createNamespace(self, login, namespaceName):
+    """
+    Parameters:
+     - login
+     - namespaceName
+    """
+    pass
+
+  def deleteNamespace(self, login, namespaceName):
+    """
+    Parameters:
+     - login
+     - namespaceName
+    """
+    pass
+
+  def renameNamespace(self, login, oldNamespaceName, newNamespaceName):
+    """
+    Parameters:
+     - login
+     - oldNamespaceName
+     - newNamespaceName
+    """
+    pass
+
+  def setNamespaceProperty(self, login, namespaceName, property, value):
+    """
+    Parameters:
+     - login
+     - namespaceName
+     - property
+     - value
+    """
+    pass
+
+  def removeNamespaceProperty(self, login, namespaceName, property):
+    """
+    Parameters:
+     - login
+     - namespaceName
+     - property
+    """
+    pass
+
+  def getNamespaceProperties(self, login, namespaceName):
+    """
+    Parameters:
+     - login
+     - namespaceName
+    """
+    pass
+
+  def namespaceIdMap(self, login):
+    """
+    Parameters:
+     - login
+    """
+    pass
+
+  def attachNamespaceIterator(self, login, namespaceName, setting, scopes):
+    """
+    Parameters:
+     - login
+     - namespaceName
+     - setting
+     - scopes
+    """
+    pass
+
+  def removeNamespaceIterator(self, login, namespaceName, name, scopes):
+    """
+    Parameters:
+     - login
+     - namespaceName
+     - name
+     - scopes
+    """
+    pass
+
+  def getNamespaceIteratorSetting(self, login, namespaceName, name, scope):
+    """
+    Parameters:
+     - login
+     - namespaceName
+     - name
+     - scope
+    """
+    pass
+
+  def listNamespaceIterators(self, login, namespaceName):
+    """
+    Parameters:
+     - login
+     - namespaceName
+    """
+    pass
+
+  def checkNamespaceIteratorConflicts(self, login, namespaceName, setting, scopes):
+    """
+    Parameters:
+     - login
+     - namespaceName
+     - setting
+     - scopes
+    """
+    pass
+
+  def addNamespaceConstraint(self, login, namespaceName, constraintClassName):
+    """
+    Parameters:
+     - login
+     - namespaceName
+     - constraintClassName
+    """
+    pass
+
+  def removeNamespaceConstraint(self, login, namespaceName, id):
+    """
+    Parameters:
+     - login
+     - namespaceName
+     - id
+    """
+    pass
+
+  def listNamespaceConstraints(self, login, namespaceName):
+    """
+    Parameters:
+     - login
+     - namespaceName
+    """
+    pass
+
+  def testNamespaceClassLoad(self, login, namespaceName, className, asTypeName):
+    """
+    Parameters:
+     - login
+     - namespaceName
+     - className
+     - asTypeName
+    """
+    pass
+
 
 class Client(Iface):
   def __init__(self, iprot, oprot=None):
@@ -3050,6 +3244,125 @@ class Client(Iface):
       raise result.ouch3
     return
 
+  def grantNamespacePermission(self, login, user, namespaceName, perm):
+    """
+    Parameters:
+     - login
+     - user
+     - namespaceName
+     - perm
+    """
+    self.send_grantNamespacePermission(login, user, namespaceName, perm)
+    self.recv_grantNamespacePermission()
+
+  def send_grantNamespacePermission(self, login, user, namespaceName, perm):
+    self._oprot.writeMessageBegin('grantNamespacePermission', TMessageType.CALL, self._seqid)
+    args = grantNamespacePermission_args()
+    args.login = login
+    args.user = user
+    args.namespaceName = namespaceName
+    args.perm = perm
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_grantNamespacePermission(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = grantNamespacePermission_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.ouch1 is not None:
+      raise result.ouch1
+    if result.ouch2 is not None:
+      raise result.ouch2
+    return
+
+  def hasNamespacePermission(self, login, user, namespaceName, perm):
+    """
+    Parameters:
+     - login
+     - user
+     - namespaceName
+     - perm
+    """
+    self.send_hasNamespacePermission(login, user, namespaceName, perm)
+    return self.recv_hasNamespacePermission()
+
+  def send_hasNamespacePermission(self, login, user, namespaceName, perm):
+    self._oprot.writeMessageBegin('hasNamespacePermission', TMessageType.CALL, self._seqid)
+    args = hasNamespacePermission_args()
+    args.login = login
+    args.user = user
+    args.namespaceName = namespaceName
+    args.perm = perm
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_hasNamespacePermission(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = hasNamespacePermission_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ouch1 is not None:
+      raise result.ouch1
+    if result.ouch2 is not None:
+      raise result.ouch2
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "hasNamespacePermission failed: unknown result")
+
+  def revokeNamespacePermission(self, login, user, namespaceName, perm):
+    """
+    Parameters:
+     - login
+     - user
+     - namespaceName
+     - perm
+    """
+    self.send_revokeNamespacePermission(login, user, namespaceName, perm)
+    self.recv_revokeNamespacePermission()
+
+  def send_revokeNamespacePermission(self, login, user, namespaceName, perm):
+    self._oprot.writeMessageBegin('revokeNamespacePermission', TMessageType.CALL, self._seqid)
+    args = revokeNamespacePermission_args()
+    args.login = login
+    args.user = user
+    args.namespaceName = namespaceName
+    args.perm = perm
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_revokeNamespacePermission(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = revokeNamespacePermission_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.ouch1 is not None:
+      raise result.ouch1
+    if result.ouch2 is not None:
+      raise result.ouch2
+    return
+
   def createBatchScanner(self, login, tableName, options):
     """
     Parameters:
@@ -3652,1286 +3965,918 @@ class Client(Iface):
       return result.success
     raise TApplicationException(TApplicationException.MISSING_RESULT, "getFollowing failed: unknown result")
 
+  def systemNamespace(self):
+    self.send_systemNamespace()
+    return self.recv_systemNamespace()
 
-class Processor(Iface, TProcessor):
-  def __init__(self, handler):
-    self._handler = handler
-    self._processMap = {}
-    self._processMap["login"] = Processor.process_login
-    self._processMap["addConstraint"] = Processor.process_addConstraint
-    self._processMap["addSplits"] = Processor.process_addSplits
-    self._processMap["attachIterator"] = Processor.process_attachIterator
-    self._processMap["checkIteratorConflicts"] = Processor.process_checkIteratorConflicts
-    self._processMap["clearLocatorCache"] = Processor.process_clearLocatorCache
-    self._processMap["cloneTable"] = Processor.process_cloneTable
-    self._processMap["compactTable"] = Processor.process_compactTable
-    self._processMap["cancelCompaction"] = Processor.process_cancelCompaction
-    self._processMap["createTable"] = Processor.process_createTable
-    self._processMap["deleteTable"] = Processor.process_deleteTable
-    self._processMap["deleteRows"] = Processor.process_deleteRows
-    self._processMap["exportTable"] = Processor.process_exportTable
-    self._processMap["flushTable"] = Processor.process_flushTable
-    self._processMap["getDiskUsage"] = Processor.process_getDiskUsage
-    self._processMap["getLocalityGroups"] = Processor.process_getLocalityGroups
-    self._processMap["getIteratorSetting"] = Processor.process_getIteratorSetting
-    self._processMap["getMaxRow"] = Processor.process_getMaxRow
-    self._processMap["getTableProperties"] = Processor.process_getTableProperties
-    self._processMap["importDirectory"] = Processor.process_importDirectory
-    self._processMap["importTable"] = Processor.process_importTable
-    self._processMap["listSplits"] = Processor.process_listSplits
-    self._processMap["listTables"] = Processor.process_listTables
-    self._processMap["listIterators"] = Processor.process_listIterators
-    self._processMap["listConstraints"] = Processor.process_listConstraints
-    self._processMap["mergeTablets"] = Processor.process_mergeTablets
-    self._processMap["offlineTable"] = Processor.process_offlineTable
-    self._processMap["onlineTable"] = Processor.process_onlineTable
-    self._processMap["removeConstraint"] = Processor.process_removeConstraint
-    self._processMap["removeIterator"] = Processor.process_removeIterator
-    self._processMap["removeTableProperty"] = Processor.process_removeTableProperty
-    self._processMap["renameTable"] = Processor.process_renameTable
-    self._processMap["setLocalityGroups"] = Processor.process_setLocalityGroups
-    self._processMap["setTableProperty"] = Processor.process_setTableProperty
-    self._processMap["splitRangeByTablets"] = Processor.process_splitRangeByTablets
-    self._processMap["tableExists"] = Processor.process_tableExists
-    self._processMap["tableIdMap"] = Processor.process_tableIdMap
-    self._processMap["testTableClassLoad"] = Processor.process_testTableClassLoad
-    self._processMap["pingTabletServer"] = Processor.process_pingTabletServer
-    self._processMap["getActiveScans"] = Processor.process_getActiveScans
-    self._processMap["getActiveCompactions"] = Processor.process_getActiveCompactions
-    self._processMap["getSiteConfiguration"] = Processor.process_getSiteConfiguration
-    self._processMap["getSystemConfiguration"] = Processor.process_getSystemConfiguration
-    self._processMap["getTabletServers"] = Processor.process_getTabletServers
-    self._processMap["removeProperty"] = Processor.process_removeProperty
-    self._processMap["setProperty"] = Processor.process_setProperty
-    self._processMap["testClassLoad"] = Processor.process_testClassLoad
-    self._processMap["authenticateUser"] = Processor.process_authenticateUser
-    self._processMap["changeUserAuthorizations"] = Processor.process_changeUserAuthorizations
-    self._processMap["changeLocalUserPassword"] = Processor.process_changeLocalUserPassword
-    self._processMap["createLocalUser"] = Processor.process_createLocalUser
-    self._processMap["dropLocalUser"] = Processor.process_dropLocalUser
-    self._processMap["getUserAuthorizations"] = Processor.process_getUserAuthorizations
-    self._processMap["grantSystemPermission"] = Processor.process_grantSystemPermission
-    self._processMap["grantTablePermission"] = Processor.process_grantTablePermission
-    self._processMap["hasSystemPermission"] = Processor.process_hasSystemPermission
-    self._processMap["hasTablePermission"] = Processor.process_hasTablePermission
-    self._processMap["listLocalUsers"] = Processor.process_listLocalUsers
-    self._processMap["revokeSystemPermission"] = Processor.process_revokeSystemPermission
-    self._processMap["revokeTablePermission"] = Processor.process_revokeTablePermission
-    self._processMap["createBatchScanner"] = Processor.process_createBatchScanner
-    self._processMap["createScanner"] = Processor.process_createScanner
-    self._processMap["hasNext"] = Processor.process_hasNext
-    self._processMap["nextEntry"] = Processor.process_nextEntry
-    self._processMap["nextK"] = Processor.process_nextK
-    self._processMap["closeScanner"] = Processor.process_closeScanner
-    self._processMap["updateAndFlush"] = Processor.process_updateAndFlush
-    self._processMap["createWriter"] = Processor.process_createWriter
-    self._processMap["update"] = Processor.process_update
-    self._processMap["flush"] = Processor.process_flush
-    self._processMap["closeWriter"] = Processor.process_closeWriter
-    self._processMap["updateRowConditionally"] = Processor.process_updateRowConditionally
-    self._processMap["createConditionalWriter"] = Processor.process_createConditionalWriter
-    self._processMap["updateRowsConditionally"] = Processor.process_updateRowsConditionally
-    self._processMap["closeConditionalWriter"] = Processor.process_closeConditionalWriter
-    self._processMap["getRowRange"] = Processor.process_getRowRange
-    self._processMap["getFollowing"] = Processor.process_getFollowing
+  def send_systemNamespace(self):
+    self._oprot.writeMessageBegin('systemNamespace', TMessageType.CALL, self._seqid)
+    args = systemNamespace_args()
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
 
-  def process(self, iprot, oprot):
-    (name, type, seqid) = iprot.readMessageBegin()
-    if name not in self._processMap:
-      iprot.skip(TType.STRUCT)
+  def recv_systemNamespace(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
       iprot.readMessageEnd()
-      x = TApplicationException(TApplicationException.UNKNOWN_METHOD, 'Unknown function %s' % (name))
-      oprot.writeMessageBegin(name, TMessageType.EXCEPTION, seqid)
-      x.write(oprot)
-      oprot.writeMessageEnd()
-      oprot.trans.flush()
-      return
-    else:
-      self._processMap[name](self, seqid, iprot, oprot)
-    return True
-
-  def process_login(self, seqid, iprot, oprot):
-    args = login_args()
-    args.read(iprot)
+      raise x
+    result = systemNamespace_result()
+    result.read(iprot)
     iprot.readMessageEnd()
-    result = login_result()
-    try:
-      result.success = self._handler.login(args.principal, args.loginProperties)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("login", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+    if result.success is not None:
+      return result.success
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "systemNamespace failed: unknown result")
 
-  def process_addConstraint(self, seqid, iprot, oprot):
-    args = addConstraint_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = addConstraint_result()
-    try:
-      result.success = self._handler.addConstraint(args.login, args.tableName, args.constraintClassName)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("addConstraint", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def defaultNamespace(self):
+    self.send_defaultNamespace()
+    return self.recv_defaultNamespace()
 
-  def process_addSplits(self, seqid, iprot, oprot):
-    args = addSplits_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = addSplits_result()
-    try:
-      self._handler.addSplits(args.login, args.tableName, args.splits)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("addSplits", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def send_defaultNamespace(self):
+    self._oprot.writeMessageBegin('defaultNamespace', TMessageType.CALL, self._seqid)
+    args = defaultNamespace_args()
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
 
-  def process_attachIterator(self, seqid, iprot, oprot):
-    args = attachIterator_args()
-    args.read(iprot)
+  def recv_defaultNamespace(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = defaultNamespace_result()
+    result.read(iprot)
     iprot.readMessageEnd()
-    result = attachIterator_result()
-    try:
-      self._handler.attachIterator(args.login, args.tableName, args.setting, args.scopes)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloSecurityException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("attachIterator", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+    if result.success is not None:
+      return result.success
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "defaultNamespace failed: unknown result")
 
-  def process_checkIteratorConflicts(self, seqid, iprot, oprot):
-    args = checkIteratorConflicts_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = checkIteratorConflicts_result()
-    try:
-      self._handler.checkIteratorConflicts(args.login, args.tableName, args.setting, args.scopes)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloSecurityException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("checkIteratorConflicts", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def listNamespaces(self, login):
+    """
+    Parameters:
+     - login
+    """
+    self.send_listNamespaces(login)
+    return self.recv_listNamespaces()
 
-  def process_clearLocatorCache(self, seqid, iprot, oprot):
-    args = clearLocatorCache_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = clearLocatorCache_result()
-    try:
-      self._handler.clearLocatorCache(args.login, args.tableName)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except TableNotFoundException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("clearLocatorCache", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def send_listNamespaces(self, login):
+    self._oprot.writeMessageBegin('listNamespaces', TMessageType.CALL, self._seqid)
+    args = listNamespaces_args()
+    args.login = login
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
 
-  def process_cloneTable(self, seqid, iprot, oprot):
-    args = cloneTable_args()
-    args.read(iprot)
+  def recv_listNamespaces(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = listNamespaces_result()
+    result.read(iprot)
     iprot.readMessageEnd()
-    result = cloneTable_result()
-    try:
-      self._handler.cloneTable(args.login, args.tableName, args.newTableName, args.flush, args.propertiesToSet, args.propertiesToExclude)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except TableExistsException as ouch4:
-      msg_type = TMessageType.REPLY
-      result.ouch4 = ouch4
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("cloneTable", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+    if result.success is not None:
+      return result.success
+    if result.ouch1 is not None:
+      raise result.ouch1
+    if result.ouch2 is not None:
+      raise result.ouch2
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "listNamespaces failed: unknown result")
 
-  def process_compactTable(self, seqid, iprot, oprot):
-    args = compactTable_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = compactTable_result()
-    try:
-      self._handler.compactTable(args.login, args.tableName, args.startRow, args.endRow, args.iterators, args.flush, args.wait, args.compactionStrategy)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloSecurityException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except TableNotFoundException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except AccumuloException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("compactTable", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def namespaceExists(self, login, namespaceName):
+    """
+    Parameters:
+     - login
+     - namespaceName
+    """
+    self.send_namespaceExists(login, namespaceName)
+    return self.recv_namespaceExists()
 
-  def process_cancelCompaction(self, seqid, iprot, oprot):
-    args = cancelCompaction_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = cancelCompaction_result()
-    try:
-      self._handler.cancelCompaction(args.login, args.tableName)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloSecurityException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except TableNotFoundException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except AccumuloException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("cancelCompaction", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def send_namespaceExists(self, login, namespaceName):
+    self._oprot.writeMessageBegin('namespaceExists', TMessageType.CALL, self._seqid)
+    args = namespaceExists_args()
+    args.login = login
+    args.namespaceName = namespaceName
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
 
-  def process_createTable(self, seqid, iprot, oprot):
-    args = createTable_args()
-    args.read(iprot)
+  def recv_namespaceExists(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = namespaceExists_result()
+    result.read(iprot)
     iprot.readMessageEnd()
-    result = createTable_result()
-    try:
-      self._handler.createTable(args.login, args.tableName, args.versioningIter, args.type)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableExistsException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("createTable", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+    if result.success is not None:
+      return result.success
+    if result.ouch1 is not None:
+      raise result.ouch1
+    if result.ouch2 is not None:
+      raise result.ouch2
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "namespaceExists failed: unknown result")
 
-  def process_deleteTable(self, seqid, iprot, oprot):
-    args = deleteTable_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = deleteTable_result()
-    try:
-      self._handler.deleteTable(args.login, args.tableName)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("deleteTable", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def createNamespace(self, login, namespaceName):
+    """
+    Parameters:
+     - login
+     - namespaceName
+    """
+    self.send_createNamespace(login, namespaceName)
+    self.recv_createNamespace()
 
-  def process_deleteRows(self, seqid, iprot, oprot):
-    args = deleteRows_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = deleteRows_result()
-    try:
-      self._handler.deleteRows(args.login, args.tableName, args.startRow, args.endRow)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("deleteRows", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def send_createNamespace(self, login, namespaceName):
+    self._oprot.writeMessageBegin('createNamespace', TMessageType.CALL, self._seqid)
+    args = createNamespace_args()
+    args.login = login
+    args.namespaceName = namespaceName
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
 
-  def process_exportTable(self, seqid, iprot, oprot):
-    args = exportTable_args()
-    args.read(iprot)
+  def recv_createNamespace(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = createNamespace_result()
+    result.read(iprot)
     iprot.readMessageEnd()
-    result = exportTable_result()
-    try:
-      self._handler.exportTable(args.login, args.tableName, args.exportDir)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("exportTable", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+    if result.ouch1 is not None:
+      raise result.ouch1
+    if result.ouch2 is not None:
+      raise result.ouch2
+    if result.ouch3 is not None:
+      raise result.ouch3
+    return
 
-  def process_flushTable(self, seqid, iprot, oprot):
-    args = flushTable_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = flushTable_result()
-    try:
-      self._handler.flushTable(args.login, args.tableName, args.startRow, args.endRow, args.wait)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("flushTable", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def deleteNamespace(self, login, namespaceName):
+    """
+    Parameters:
+     - login
+     - namespaceName
+    """
+    self.send_deleteNamespace(login, namespaceName)
+    self.recv_deleteNamespace()
 
-  def process_getDiskUsage(self, seqid, iprot, oprot):
-    args = getDiskUsage_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = getDiskUsage_result()
-    try:
-      result.success = self._handler.getDiskUsage(args.login, args.tables)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("getDiskUsage", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def send_deleteNamespace(self, login, namespaceName):
+    self._oprot.writeMessageBegin('deleteNamespace', TMessageType.CALL, self._seqid)
+    args = deleteNamespace_args()
+    args.login = login
+    args.namespaceName = namespaceName
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
 
-  def process_getLocalityGroups(self, seqid, iprot, oprot):
-    args = getLocalityGroups_args()
-    args.read(iprot)
+  def recv_deleteNamespace(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = deleteNamespace_result()
+    result.read(iprot)
     iprot.readMessageEnd()
-    result = getLocalityGroups_result()
-    try:
-      result.success = self._handler.getLocalityGroups(args.login, args.tableName)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("getLocalityGroups", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+    if result.ouch1 is not None:
+      raise result.ouch1
+    if result.ouch2 is not None:
+      raise result.ouch2
+    if result.ouch3 is not None:
+      raise result.ouch3
+    if result.ouch4 is not None:
+      raise result.ouch4
+    return
 
-  def process_getIteratorSetting(self, seqid, iprot, oprot):
-    args = getIteratorSetting_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = getIteratorSetting_result()
-    try:
-      result.success = self._handler.getIteratorSetting(args.login, args.tableName, args.iteratorName, args.scope)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("getIteratorSetting", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def renameNamespace(self, login, oldNamespaceName, newNamespaceName):
+    """
+    Parameters:
+     - login
+     - oldNamespaceName
+     - newNamespaceName
+    """
+    self.send_renameNamespace(login, oldNamespaceName, newNamespaceName)
+    self.recv_renameNamespace()
 
-  def process_getMaxRow(self, seqid, iprot, oprot):
-    args = getMaxRow_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = getMaxRow_result()
-    try:
-      result.success = self._handler.getMaxRow(args.login, args.tableName, args.auths, args.startRow, args.startInclusive, args.endRow, args.endInclusive)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("getMaxRow", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def send_renameNamespace(self, login, oldNamespaceName, newNamespaceName):
+    self._oprot.writeMessageBegin('renameNamespace', TMessageType.CALL, self._seqid)
+    args = renameNamespace_args()
+    args.login = login
+    args.oldNamespaceName = oldNamespaceName
+    args.newNamespaceName = newNamespaceName
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
 
-  def process_getTableProperties(self, seqid, iprot, oprot):
-    args = getTableProperties_args()
-    args.read(iprot)
+  def recv_renameNamespace(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = renameNamespace_result()
+    result.read(iprot)
     iprot.readMessageEnd()
-    result = getTableProperties_result()
-    try:
-      result.success = self._handler.getTableProperties(args.login, args.tableName)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("getTableProperties", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+    if result.ouch1 is not None:
+      raise result.ouch1
+    if result.ouch2 is not None:
+      raise result.ouch2
+    if result.ouch3 is not None:
+      raise result.ouch3
+    if result.ouch4 is not None:
+      raise result.ouch4
+    return
 
-  def process_importDirectory(self, seqid, iprot, oprot):
-    args = importDirectory_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = importDirectory_result()
-    try:
-      self._handler.importDirectory(args.login, args.tableName, args.importDir, args.failureDir, args.setTime)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except TableNotFoundException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except AccumuloSecurityException as ouch4:
-      msg_type = TMessageType.REPLY
-      result.ouch4 = ouch4
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("importDirectory", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def setNamespaceProperty(self, login, namespaceName, property, value):
+    """
+    Parameters:
+     - login
+     - namespaceName
+     - property
+     - value
+    """
+    self.send_setNamespaceProperty(login, namespaceName, property, value)
+    self.recv_setNamespaceProperty()
 
-  def process_importTable(self, seqid, iprot, oprot):
-    args = importTable_args()
-    args.read(iprot)
+  def send_setNamespaceProperty(self, login, namespaceName, property, value):
+    self._oprot.writeMessageBegin('setNamespaceProperty', TMessageType.CALL, self._seqid)
+    args = setNamespaceProperty_args()
+    args.login = login
+    args.namespaceName = namespaceName
+    args.property = property
+    args.value = value
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_setNamespaceProperty(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = setNamespaceProperty_result()
+    result.read(iprot)
     iprot.readMessageEnd()
-    result = importTable_result()
-    try:
-      self._handler.importTable(args.login, args.tableName, args.importDir)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except TableExistsException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except AccumuloSecurityException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("importTable", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+    if result.ouch1 is not None:
+      raise result.ouch1
+    if result.ouch2 is not None:
+      raise result.ouch2
+    if result.ouch3 is not None:
+      raise result.ouch3
+    return
 
-  def process_listSplits(self, seqid, iprot, oprot):
-    args = listSplits_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = listSplits_result()
-    try:
-      result.success = self._handler.listSplits(args.login, args.tableName, args.maxSplits)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("listSplits", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def removeNamespaceProperty(self, login, namespaceName, property):
+    """
+    Parameters:
+     - login
+     - namespaceName
+     - property
+    """
+    self.send_removeNamespaceProperty(login, namespaceName, property)
+    self.recv_removeNamespaceProperty()
 
-  def process_listTables(self, seqid, iprot, oprot):
-    args = listTables_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = listTables_result()
-    try:
-      result.success = self._handler.listTables(args.login)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("listTables", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def send_removeNamespaceProperty(self, login, namespaceName, property):
+    self._oprot.writeMessageBegin('removeNamespaceProperty', TMessageType.CALL, self._seqid)
+    args = removeNamespaceProperty_args()
+    args.login = login
+    args.namespaceName = namespaceName
+    args.property = property
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
 
-  def process_listIterators(self, seqid, iprot, oprot):
-    args = listIterators_args()
-    args.read(iprot)
+  def recv_removeNamespaceProperty(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = removeNamespaceProperty_result()
+    result.read(iprot)
     iprot.readMessageEnd()
-    result = listIterators_result()
-    try:
-      result.success = self._handler.listIterators(args.login, args.tableName)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("listIterators", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+    if result.ouch1 is not None:
+      raise result.ouch1
+    if result.ouch2 is not None:
+      raise result.ouch2
+    if result.ouch3 is not None:
+      raise result.ouch3
+    return
 
-  def process_listConstraints(self, seqid, iprot, oprot):
-    args = listConstraints_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = listConstraints_result()
-    try:
-      result.success = self._handler.listConstraints(args.login, args.tableName)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("listConstraints", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def getNamespaceProperties(self, login, namespaceName):
+    """
+    Parameters:
+     - login
+     - namespaceName
+    """
+    self.send_getNamespaceProperties(login, namespaceName)
+    return self.recv_getNamespaceProperties()
 
-  def process_mergeTablets(self, seqid, iprot, oprot):
-    args = mergeTablets_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = mergeTablets_result()
-    try:
-      self._handler.mergeTablets(args.login, args.tableName, args.startRow, args.endRow)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("mergeTablets", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def send_getNamespaceProperties(self, login, namespaceName):
+    self._oprot.writeMessageBegin('getNamespaceProperties', TMessageType.CALL, self._seqid)
+    args = getNamespaceProperties_args()
+    args.login = login
+    args.namespaceName = namespaceName
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
 
-  def process_offlineTable(self, seqid, iprot, oprot):
-    args = offlineTable_args()
-    args.read(iprot)
+  def recv_getNamespaceProperties(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getNamespaceProperties_result()
+    result.read(iprot)
     iprot.readMessageEnd()
-    result = offlineTable_result()
-    try:
-      self._handler.offlineTable(args.login, args.tableName, args.wait)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("offlineTable", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+    if result.success is not None:
+      return result.success
+    if result.ouch1 is not None:
+      raise result.ouch1
+    if result.ouch2 is not None:
+      raise result.ouch2
+    if result.ouch3 is not None:
+      raise result.ouch3
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getNamespaceProperties failed: unknown result")
 
-  def process_onlineTable(self, seqid, iprot, oprot):
-    args = onlineTable_args()
-    args.read(iprot)
+  def namespaceIdMap(self, login):
+    """
+    Parameters:
+     - login
+    """
+    self.send_namespaceIdMap(login)
+    return self.recv_namespaceIdMap()
+
+  def send_namespaceIdMap(self, login):
+    self._oprot.writeMessageBegin('namespaceIdMap', TMessageType.CALL, self._seqid)
+    args = namespaceIdMap_args()
+    args.login = login
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_namespaceIdMap(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = namespaceIdMap_result()
+    result.read(iprot)
     iprot.readMessageEnd()
-    result = onlineTable_result()
-    try:
-      self._handler.onlineTable(args.login, args.tableName, args.wait)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("onlineTable", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+    if result.success is not None:
+      return result.success
+    if result.ouch1 is not None:
+      raise result.ouch1
+    if result.ouch2 is not None:
+      raise result.ouch2
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "namespaceIdMap failed: unknown result")
 
-  def process_removeConstraint(self, seqid, iprot, oprot):
-    args = removeConstraint_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = removeConstraint_result()
-    try:
-      self._handler.removeConstraint(args.login, args.tableName, args.constraint)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("removeConstraint", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def attachNamespaceIterator(self, login, namespaceName, setting, scopes):
+    """
+    Parameters:
+     - login
+     - namespaceName
+     - setting
+     - scopes
+    """
+    self.send_attachNamespaceIterator(login, namespaceName, setting, scopes)
+    self.recv_attachNamespaceIterator()
 
-  def process_removeIterator(self, seqid, iprot, oprot):
-    args = removeIterator_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = removeIterator_result()
-    try:
-      self._handler.removeIterator(args.login, args.tableName, args.iterName, args.scopes)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("removeIterator", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def send_attachNamespaceIterator(self, login, namespaceName, setting, scopes):
+    self._oprot.writeMessageBegin('attachNamespaceIterator', TMessageType.CALL, self._seqid)
+    args = attachNamespaceIterator_args()
+    args.login = login
+    args.namespaceName = namespaceName
+    args.setting = setting
+    args.scopes = scopes
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
 
-  def process_removeTableProperty(self, seqid, iprot, oprot):
-    args = removeTableProperty_args()
-    args.read(iprot)
+  def recv_attachNamespaceIterator(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = attachNamespaceIterator_result()
+    result.read(iprot)
     iprot.readMessageEnd()
-    result = removeTableProperty_result()
-    try:
-      self._handler.removeTableProperty(args.login, args.tableName, args.property)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("removeTableProperty", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+    if result.ouch1 is not None:
+      raise result.ouch1
+    if result.ouch2 is not None:
+      raise result.ouch2
+    if result.ouch3 is not None:
+      raise result.ouch3
+    return
 
-  def process_renameTable(self, seqid, iprot, oprot):
-    args = renameTable_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = renameTable_result()
-    try:
-      self._handler.renameTable(args.login, args.oldTableName, args.newTableName)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except TableExistsException as ouch4:
-      msg_type = TMessageType.REPLY
-      result.ouch4 = ouch4
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("renameTable", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def removeNamespaceIterator(self, login, namespaceName, name, scopes):
+    """
+    Parameters:
+     - login
+     - namespaceName
+     - name
+     - scopes
+    """
+    self.send_removeNamespaceIterator(login, namespaceName, name, scopes)
+    self.recv_removeNamespaceIterator()
 
-  def process_setLocalityGroups(self, seqid, iprot, oprot):
-    args = setLocalityGroups_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = setLocalityGroups_result()
-    try:
-      self._handler.setLocalityGroups(args.login, args.tableName, args.groups)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("setLocalityGroups", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def send_removeNamespaceIterator(self, login, namespaceName, name, scopes):
+    self._oprot.writeMessageBegin('removeNamespaceIterator', TMessageType.CALL, self._seqid)
+    args = removeNamespaceIterator_args()
+    args.login = login
+    args.namespaceName = namespaceName
+    args.name = name
+    args.scopes = scopes
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
 
-  def process_setTableProperty(self, seqid, iprot, oprot):
-    args = setTableProperty_args()
-    args.read(iprot)
+  def recv_removeNamespaceIterator(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = removeNamespaceIterator_result()
+    result.read(iprot)
     iprot.readMessageEnd()
-    result = setTableProperty_result()
-    try:
-      self._handler.setTableProperty(args.login, args.tableName, args.property, args.value)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("setTableProperty", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+    if result.ouch1 is not None:
+      raise result.ouch1
+    if result.ouch2 is not None:
+      raise result.ouch2
+    if result.ouch3 is not None:
+      raise result.ouch3
+    return
 
-  def process_splitRangeByTablets(self, seqid, iprot, oprot):
-    args = splitRangeByTablets_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = splitRangeByTablets_result()
-    try:
-      result.success = self._handler.splitRangeByTablets(args.login, args.tableName, args.range, args.maxSplits)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("splitRangeByTablets", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def getNamespaceIteratorSetting(self, login, namespaceName, name, scope):
+    """
+    Parameters:
+     - login
+     - namespaceName
+     - name
+     - scope
+    """
+    self.send_getNamespaceIteratorSetting(login, namespaceName, name, scope)
+    return self.recv_getNamespaceIteratorSetting()
 
-  def process_tableExists(self, seqid, iprot, oprot):
-    args = tableExists_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = tableExists_result()
-    try:
-      result.success = self._handler.tableExists(args.login, args.tableName)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("tableExists", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def send_getNamespaceIteratorSetting(self, login, namespaceName, name, scope):
+    self._oprot.writeMessageBegin('getNamespaceIteratorSetting', TMessageType.CALL, self._seqid)
+    args = getNamespaceIteratorSetting_args()
+    args.login = login
+    args.namespaceName = namespaceName
+    args.name = name
+    args.scope = scope
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
 
-  def process_tableIdMap(self, seqid, iprot, oprot):
-    args = tableIdMap_args()
-    args.read(iprot)
+  def recv_getNamespaceIteratorSetting(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getNamespaceIteratorSetting_result()
+    result.read(iprot)
     iprot.readMessageEnd()
-    result = tableIdMap_result()
-    try:
-      result.success = self._handler.tableIdMap(args.login)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("tableIdMap", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+    if result.success is not None:
+      return result.success
+    if result.ouch1 is not None:
+      raise result.ouch1
+    if result.ouch2 is not None:
+      raise result.ouch2
+    if result.ouch3 is not None:
+      raise result.ouch3
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getNamespaceIteratorSetting failed: unknown result")
 
-  def process_testTableClassLoad(self, seqid, iprot, oprot):
-    args = testTableClassLoad_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = testTableClassLoad_result()
-    try:
-      result.success = self._handler.testTableClassLoad(args.login, args.tableName, args.className, args.asTypeName)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except TableNotFoundException as ouch3:
-      msg_type = TMessageType.REPLY
-      result.ouch3 = ouch3
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("testTableClassLoad", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def listNamespaceIterators(self, login, namespaceName):
+    """
+    Parameters:
+     - login
+     - namespaceName
+    """
+    self.send_listNamespaceIterators(login, namespaceName)
+    return self.recv_listNamespaceIterators()
 
-  def process_pingTabletServer(self, seqid, iprot, oprot):
-    args = pingTabletServer_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = pingTabletServer_result()
-    try:
-      self._handler.pingTabletServer(args.login, args.tserver)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("pingTabletServer", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def send_listNamespaceIterators(self, login, namespaceName):
+    self._oprot.writeMessageBegin('listNamespaceIterators', TMessageType.CALL, self._seqid)
+    args = listNamespaceIterators_args()
+    args.login = login
+    args.namespaceName = namespaceName
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
 
-  def process_getActiveScans(self, seqid, iprot, oprot):
-    args = getActiveScans_args()
-    args.read(iprot)
+  def recv_listNamespaceIterators(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = listNamespaceIterators_result()
+    result.read(iprot)
     iprot.readMessageEnd()
-    result = getActiveScans_result()
-    try:
-      result.success = self._handler.getActiveScans(args.login, args.tserver)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("getActiveScans", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+    if result.success is not None:
+      return result.success
+    if result.ouch1 is not None:
+      raise result.ouch1
+    if result.ouch2 is not None:
+      raise result.ouch2
+    if result.ouch3 is not None:
+      raise result.ouch3
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "listNamespaceIterators failed: unknown result")
 
-  def process_getActiveCompactions(self, seqid, iprot, oprot):
-    args = getActiveCompactions_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = getActiveCompactions_result()
-    try:
-      result.success = self._handler.getActiveCompactions(args.login, args.tserver)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("getActiveCompactions", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def checkNamespaceIteratorConflicts(self, login, namespaceName, setting, scopes):
+    """
+    Parameters:
+     - login
+     - namespaceName
+     - setting
+     - scopes
+    """
+    self.send_checkNamespaceIteratorConflicts(login, namespaceName, setting, scopes)
+    self.recv_checkNamespaceIteratorConflicts()
 
-  def process_getSiteConfiguration(self, seqid, iprot, oprot):
-    args = getSiteConfiguration_args()
-    args.read(iprot)
-    iprot.readMessageEnd()
-    result = getSiteConfiguration_result()
-    try:
-      result.success = self._handler.getSiteConfiguration(args.login)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("getSiteConfiguration", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+  def send_checkNamespaceIteratorConflicts(self, login, namespaceName, setting, scopes):
+    self._oprot.writeMessageBegin('checkNamespaceIteratorConflicts', TMessageType.CALL, self._seqid)
+    args = checkNamespaceIteratorConflicts_args()
+    args.login = login
+    args.namespaceName = namespaceName
+    args.setting = setting
+    args.scopes = scopes
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
 
-  def process_getSystemConfiguration(self, seqid, iprot, oprot):
-    args = getSystemConfiguration_args()
-    args.read(iprot)
+  def recv_checkNamespaceIteratorConflicts(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = checkNamespaceIteratorConflicts_result()
+    result.read(iprot)
     iprot.readMessageEnd()
-    result = getSystemConfiguration_result()
-    try:
-      result.success = self._handler.getSystemConfiguration(args.login)
-      msg_type = TMessageType.REPLY
-    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-      raise
-    except AccumuloException as ouch1:
-      msg_type = TMessageType.REPLY
-      result.ouch1 = ouch1
-    except AccumuloSecurityException as ouch2:
-      msg_type = TMessageType.REPLY
-      result.ouch2 = ouch2
-    except Exception as ex:
-      msg_type = TMessageType.EXCEPTION
-      logging.exception(ex)
-      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-    oprot.writeMessageBegin("getSystemConfiguration", msg_type, seqid)
-    result.write(oprot)
-    oprot.writeMessageEnd()
-    oprot.trans.flush()
+    if result.ouch1 is not None:
+      raise result.ouch1
+    if result.ouch2 is not None:
+      raise result.ouch2
+    if result.ouch3 is not None:
+      raise result.ouch3
+    return
 
-  def process_getTabletServers(self, seqid, iprot, oprot):
-    args = getTabletServers_args()
+  def addNamespaceConstraint(self, login, namespaceName, constraintClassName):
+    """
+    Parameters:
+     - login
+     - namespaceName
+     - constraintClassName
+    """
+    self.send_addNamespaceConstraint(login, namespaceName, constraintClassName)
+    return self.recv_addNamespaceConstraint()
+
+  def send_addNamespaceConstraint(self, login, namespaceName, constraintClassName):
+    self._oprot.writeMessageBegin('addNamespaceConstraint', TMessageType.CALL, self._seqid)
+    args = addNamespaceConstraint_args()
+    args.login = login
+    args.namespaceName = namespaceName
+    args.constraintClassName = constraintClassName
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_addNamespaceConstraint(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = addNamespaceConstraint_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ouch1 is not None:
+      raise result.ouch1
+    if result.ouch2 is not None:
+      raise result.ouch2
+    if result.ouch3 is not None:
+      raise result.ouch3
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "addNamespaceConstraint failed: unknown result")
+
+  def removeNamespaceConstraint(self, login, namespaceName, id):
+    """
+    Parameters:
+     - login
+     - namespaceName
+     - id
+    """
+    self.send_removeNamespaceConstraint(login, namespaceName, id)
+    self.recv_removeNamespaceConstraint()
+
+  def send_removeNamespaceConstraint(self, login, namespaceName, id):
+    self._oprot.writeMessageBegin('removeNamespaceConstraint', TMessageType.CALL, self._seqid)
+    args = removeNamespaceConstraint_args()
+    args.login = login
+    args.namespaceName = namespaceName
+    args.id = id
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_removeNamespaceConstraint(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = removeNamespaceConstraint_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.ouch1 is not None:
+      raise result.ouch1
+    if result.ouch2 is not None:
+      raise result.ouch2
+    if result.ouch3 is not None:
+      raise result.ouch3
+    return
+
+  def listNamespaceConstraints(self, login, namespaceName):
+    """
+    Parameters:
+     - login
+     - namespaceName
+    """
+    self.send_listNamespaceConstraints(login, namespaceName)
+    return self.recv_listNamespaceConstraints()
+
+  def send_listNamespaceConstraints(self, login, namespaceName):
+    self._oprot.writeMessageBegin('listNamespaceConstraints', TMessageType.CALL, self._seqid)
+    args = listNamespaceConstraints_args()
+    args.login = login
+    args.namespaceName = namespaceName
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_listNamespaceConstraints(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = listNamespaceConstraints_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ouch1 is not None:
+      raise result.ouch1
+    if result.ouch2 is not None:
+      raise result.ouch2
+    if result.ouch3 is not None:
+      raise result.ouch3
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "listNamespaceConstraints failed: unknown result")
+
+  def testNamespaceClassLoad(self, login, namespaceName, className, asTypeName):
+    """
+    Parameters:
+     - login
+     - namespaceName
+     - className
+     - asTypeName
+    """
+    self.send_testNamespaceClassLoad(login, namespaceName, className, asTypeName)
+    return self.recv_testNamespaceClassLoad()
+
+  def send_testNamespaceClassLoad(self, login, namespaceName, className, asTypeName):
+    self._oprot.writeMessageBegin('testNamespaceClassLoad', TMessageType.CALL, self._seqid)
+    args = testNamespaceClassLoad_args()
+    args.login = login
+    args.namespaceName = namespaceName
+    args.className = className
+    args.asTypeName = asTypeName
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_testNamespaceClassLoad(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = testNamespaceClassLoad_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ouch1 is not None:
+      raise result.ouch1
+    if result.ouch2 is not None:
+      raise result.ouch2
+    if result.ouch3 is not None:
+      raise result.ouch3
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "testNamespaceClassLoad failed: unknown result")
+
+
+class Processor(Iface, TProcessor):
+  def __init__(self, handler):
+    self._handler = handler
+    self._processMap = {}
+    self._processMap["login"] = Processor.process_login
+    self._processMap["addConstraint"] = Processor.process_addConstraint
+    self._processMap["addSplits"] = Processor.process_addSplits
+    self._processMap["attachIterator"] = Processor.process_attachIterator
+    self._processMap["checkIteratorConflicts"] = Processor.process_checkIteratorConflicts
+    self._processMap["clearLocatorCache"] = Processor.process_clearLocatorCache
+    self._processMap["cloneTable"] = Processor.process_cloneTable
+    self._processMap["compactTable"] = Processor.process_compactTable
+    self._processMap["cancelCompaction"] = Processor.process_cancelCompaction
+    self._processMap["createTable"] = Processor.process_createTable
+    self._processMap["deleteTable"] = Processor.process_deleteTable
+    self._processMap["deleteRows"] = Processor.process_deleteRows
+    self._processMap["exportTable"] = Processor.process_exportTable
+    self._processMap["flushTable"] = Processor.process_flushTable
+    self._processMap["getDiskUsage"] = Processor.process_getDiskUsage
+    self._processMap["getLocalityGroups"] = Processor.process_getLocalityGroups
+    self._processMap["getIteratorSetting"] = Processor.process_getIteratorSetting
+    self._processMap["getMaxRow"] = Processor.process_getMaxRow
+    self._processMap["getTableProperties"] = Processor.process_getTableProperties
+    self._processMap["importDirectory"] = Processor.process_importDirectory
+    self._processMap["importTable"] = Processor.process_importTable
+    self._processMap["listSplits"] = Processor.process_listSplits
+    self._processMap["listTables"] = Processor.process_listTables
+    self._processMap["listIterators"] = Processor.process_listIterators
+    self._processMap["listConstraints"] = Processor.process_listConstraints
+    self._processMap["mergeTablets"] = Processor.process_mergeTablets
+    self._processMap["offlineTable"] = Processor.process_offlineTable
+    self._processMap["onlineTable"] = Processor.process_onlineTable
+    self._processMap["removeConstraint"] = Processor.process_removeConstraint
+    self._processMap["removeIterator"] = Processor.process_removeIterator
+    self._processMap["removeTableProperty"] = Processor.process_removeTableProperty
+    self._processMap["renameTable"] = Processor.process_renameTable
+    self._processMap["setLocalityGroups"] = Processor.process_setLocalityGroups
+    self._processMap["setTableProperty"] = Processor.process_setTableProperty
+    self._processMap["splitRangeByTablets"] = Processor.process_splitRangeByTablets
+    self._processMap["tableExists"] = Processor.process_tableExists
+    self._processMap["tableIdMap"] = Processor.process_tableIdMap
+    self._processMap["testTableClassLoad"] = Processor.process_testTableClassLoad
+    self._processMap["pingTabletServer"] = Processor.process_pingTabletServer
+    self._processMap["getActiveScans"] = Processor.process_getActiveScans
+    self._processMap["getActiveCompactions"] = Processor.process_getActiveCompactions
+    self._processMap["getSiteConfiguration"] = Processor.process_getSiteConfiguration
+    self._processMap["getSystemConfiguration"] = Processor.process_getSystemConfiguration
+    self._processMap["getTabletServers"] = Processor.process_getTabletServers
+    self._processMap["removeProperty"] = Processor.process_removeProperty
+    self._processMap["setProperty"] = Processor.process_setProperty
+    self._processMap["testClassLoad"] = Processor.process_testClassLoad
+    self._processMap["authenticateUser"] = Processor.process_authenticateUser
+    self._processMap["changeUserAuthorizations"] = Processor.process_changeUserAuthorizations
+    self._processMap["changeLocalUserPassword"] = Processor.process_changeLocalUserPassword
+    self._processMap["createLocalUser"] = Processor.process_createLocalUser
+    self._processMap["dropLocalUser"] = Processor.process_dropLocalUser
+    self._processMap["getUserAuthorizations"] = Processor.process_getUserAuthorizations
+    self._processMap["grantSystemPermission"] = Processor.process_grantSystemPermission
+    self._processMap["grantTablePermission"] = Processor.process_grantTablePermission
+    self._processMap["hasSystemPermission"] = Processor.process_hasSystemPermission
+    self._processMap["hasTablePermission"] = Processor.process_hasTablePermission
+    self._processMap["listLocalUsers"] = Processor.process_listLocalUsers
+    self._processMap["revokeSystemPermission"] = Processor.process_revokeSystemPermission
+    self._processMap["revokeTablePermission"] = Processor.process_revokeTablePermission
+    self._processMap["grantNamespacePermission"] = Processor.process_grantNamespacePermission
+    self._processMap["hasNamespacePermission"] = Processor.process_hasNamespacePermission
+    self._processMap["revokeNamespacePermission"] = Processor.process_revokeNamespacePermission
+    self._processMap["createBatchScanner"] = Processor.process_createBatchScanner
+    self._processMap["createScanner"] = Processor.process_createScanner
+    self._processMap["hasNext"] = Processor.process_hasNext
+    self._processMap["nextEntry"] = Processor.process_nextEntry
+    self._processMap["nextK"] = Processor.process_nextK
+    self._processMap["closeScanner"] = Processor.process_closeScanner
+    self._processMap["updateAndFlush"] = Processor.process_updateAndFlush
+    self._processMap["createWriter"] = Processor.process_createWriter
+    self._processMap["update"] = Processor.process_update
+    self._processMap["flush"] = Processor.process_flush
+    self._processMap["closeWriter"] = Processor.process_closeWriter
+    self._processMap["updateRowConditionally"] = Processor.process_updateRowConditionally
+    self._processMap["createConditionalWriter"] = Processor.process_createConditionalWriter
+    self._processMap["updateRowsConditionally"] = 

<TRUNCATED>

[6/9] accumulo git commit: ACCUMULO-4147 Add Accumulo Namespace Operations to Proxy

Posted by kt...@apache.org.
http://git-wip-us.apache.org/repos/asf/accumulo/blob/8839fe51/proxy/src/main/cpp/AccumuloProxy_server.skeleton.cpp
----------------------------------------------------------------------
diff --git a/proxy/src/main/cpp/AccumuloProxy_server.skeleton.cpp b/proxy/src/main/cpp/AccumuloProxy_server.skeleton.cpp
index 302aec2..6c2f52f 100644
--- a/proxy/src/main/cpp/AccumuloProxy_server.skeleton.cpp
+++ b/proxy/src/main/cpp/AccumuloProxy_server.skeleton.cpp
@@ -338,6 +338,21 @@ class AccumuloProxyHandler : virtual public AccumuloProxyIf {
     printf("revokeTablePermission\n");
   }
 
+  void grantNamespacePermission(const std::string& login, const std::string& user, const std::string& namespaceName, const NamespacePermission::type perm) {
+    // Your implementation goes here
+    printf("grantNamespacePermission\n");
+  }
+
+  bool hasNamespacePermission(const std::string& login, const std::string& user, const std::string& namespaceName, const NamespacePermission::type perm) {
+    // Your implementation goes here
+    printf("hasNamespacePermission\n");
+  }
+
+  void revokeNamespacePermission(const std::string& login, const std::string& user, const std::string& namespaceName, const NamespacePermission::type perm) {
+    // Your implementation goes here
+    printf("revokeNamespacePermission\n");
+  }
+
   void createBatchScanner(std::string& _return, const std::string& login, const std::string& tableName, const BatchScanOptions& options) {
     // Your implementation goes here
     printf("createBatchScanner\n");
@@ -423,6 +438,106 @@ class AccumuloProxyHandler : virtual public AccumuloProxyIf {
     printf("getFollowing\n");
   }
 
+  void systemNamespace(std::string& _return) {
+    // Your implementation goes here
+    printf("systemNamespace\n");
+  }
+
+  void defaultNamespace(std::string& _return) {
+    // Your implementation goes here
+    printf("defaultNamespace\n");
+  }
+
+  void listNamespaces(std::vector<std::string> & _return, const std::string& login) {
+    // Your implementation goes here
+    printf("listNamespaces\n");
+  }
+
+  bool namespaceExists(const std::string& login, const std::string& namespaceName) {
+    // Your implementation goes here
+    printf("namespaceExists\n");
+  }
+
+  void createNamespace(const std::string& login, const std::string& namespaceName) {
+    // Your implementation goes here
+    printf("createNamespace\n");
+  }
+
+  void deleteNamespace(const std::string& login, const std::string& namespaceName) {
+    // Your implementation goes here
+    printf("deleteNamespace\n");
+  }
+
+  void renameNamespace(const std::string& login, const std::string& oldNamespaceName, const std::string& newNamespaceName) {
+    // Your implementation goes here
+    printf("renameNamespace\n");
+  }
+
+  void setNamespaceProperty(const std::string& login, const std::string& namespaceName, const std::string& property, const std::string& value) {
+    // Your implementation goes here
+    printf("setNamespaceProperty\n");
+  }
+
+  void removeNamespaceProperty(const std::string& login, const std::string& namespaceName, const std::string& property) {
+    // Your implementation goes here
+    printf("removeNamespaceProperty\n");
+  }
+
+  void getNamespaceProperties(std::map<std::string, std::string> & _return, const std::string& login, const std::string& namespaceName) {
+    // Your implementation goes here
+    printf("getNamespaceProperties\n");
+  }
+
+  void namespaceIdMap(std::map<std::string, std::string> & _return, const std::string& login) {
+    // Your implementation goes here
+    printf("namespaceIdMap\n");
+  }
+
+  void attachNamespaceIterator(const std::string& login, const std::string& namespaceName, const IteratorSetting& setting, const std::set<IteratorScope::type> & scopes) {
+    // Your implementation goes here
+    printf("attachNamespaceIterator\n");
+  }
+
+  void removeNamespaceIterator(const std::string& login, const std::string& namespaceName, const std::string& name, const std::set<IteratorScope::type> & scopes) {
+    // Your implementation goes here
+    printf("removeNamespaceIterator\n");
+  }
+
+  void getNamespaceIteratorSetting(IteratorSetting& _return, const std::string& login, const std::string& namespaceName, const std::string& name, const IteratorScope::type scope) {
+    // Your implementation goes here
+    printf("getNamespaceIteratorSetting\n");
+  }
+
+  void listNamespaceIterators(std::map<std::string, std::set<IteratorScope::type> > & _return, const std::string& login, const std::string& namespaceName) {
+    // Your implementation goes here
+    printf("listNamespaceIterators\n");
+  }
+
+  void checkNamespaceIteratorConflicts(const std::string& login, const std::string& namespaceName, const IteratorSetting& setting, const std::set<IteratorScope::type> & scopes) {
+    // Your implementation goes here
+    printf("checkNamespaceIteratorConflicts\n");
+  }
+
+  int32_t addNamespaceConstraint(const std::string& login, const std::string& namespaceName, const std::string& constraintClassName) {
+    // Your implementation goes here
+    printf("addNamespaceConstraint\n");
+  }
+
+  void removeNamespaceConstraint(const std::string& login, const std::string& namespaceName, const int32_t id) {
+    // Your implementation goes here
+    printf("removeNamespaceConstraint\n");
+  }
+
+  void listNamespaceConstraints(std::map<std::string, int32_t> & _return, const std::string& login, const std::string& namespaceName) {
+    // Your implementation goes here
+    printf("listNamespaceConstraints\n");
+  }
+
+  bool testNamespaceClassLoad(const std::string& login, const std::string& namespaceName, const std::string& className, const std::string& asTypeName) {
+    // Your implementation goes here
+    printf("testNamespaceClassLoad\n");
+  }
+
 };
 
 int main(int argc, char **argv) {

http://git-wip-us.apache.org/repos/asf/accumulo/blob/8839fe51/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 8c443e0..09c2d9c 100644
--- a/proxy/src/main/cpp/proxy_types.cpp
+++ b/proxy/src/main/cpp/proxy_types.cpp
@@ -87,6 +87,30 @@ const char* _kSystemPermissionNames[] = {
 };
 const std::map<int, const char*> _SystemPermission_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(8, _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
@@ -4442,4 +4466,295 @@ const char* MutationsRejectedException::what() const throw() {
   }
 }
 
+
+NamespaceExistsException::~NamespaceExistsException() throw() {
+}
+
+
+void NamespaceExistsException::__set_msg(const std::string& val) {
+  this->msg = val;
+}
+
+uint32_t NamespaceExistsException::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->msg);
+          this->__isset.msg = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t NamespaceExistsException::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("NamespaceExistsException");
+
+  xfer += oprot->writeFieldBegin("msg", ::apache::thrift::protocol::T_STRING, 1);
+  xfer += oprot->writeString(this->msg);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(NamespaceExistsException &a, NamespaceExistsException &b) {
+  using ::std::swap;
+  swap(a.msg, b.msg);
+  swap(a.__isset, b.__isset);
+}
+
+NamespaceExistsException::NamespaceExistsException(const NamespaceExistsException& other189) : TException() {
+  msg = other189.msg;
+  __isset = other189.__isset;
+}
+NamespaceExistsException& NamespaceExistsException::operator=(const NamespaceExistsException& other190) {
+  msg = other190.msg;
+  __isset = other190.__isset;
+  return *this;
+}
+void NamespaceExistsException::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "NamespaceExistsException(";
+  out << "msg=" << to_string(msg);
+  out << ")";
+}
+
+const char* NamespaceExistsException::what() const throw() {
+  try {
+    std::stringstream ss;
+    ss << "TException - service has thrown: " << *this;
+    this->thriftTExceptionMessageHolder_ = ss.str();
+    return this->thriftTExceptionMessageHolder_.c_str();
+  } catch (const std::exception&) {
+    return "TException - service has thrown: NamespaceExistsException";
+  }
+}
+
+
+NamespaceNotFoundException::~NamespaceNotFoundException() throw() {
+}
+
+
+void NamespaceNotFoundException::__set_msg(const std::string& val) {
+  this->msg = val;
+}
+
+uint32_t NamespaceNotFoundException::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->msg);
+          this->__isset.msg = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t NamespaceNotFoundException::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("NamespaceNotFoundException");
+
+  xfer += oprot->writeFieldBegin("msg", ::apache::thrift::protocol::T_STRING, 1);
+  xfer += oprot->writeString(this->msg);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(NamespaceNotFoundException &a, NamespaceNotFoundException &b) {
+  using ::std::swap;
+  swap(a.msg, b.msg);
+  swap(a.__isset, b.__isset);
+}
+
+NamespaceNotFoundException::NamespaceNotFoundException(const NamespaceNotFoundException& other191) : TException() {
+  msg = other191.msg;
+  __isset = other191.__isset;
+}
+NamespaceNotFoundException& NamespaceNotFoundException::operator=(const NamespaceNotFoundException& other192) {
+  msg = other192.msg;
+  __isset = other192.__isset;
+  return *this;
+}
+void NamespaceNotFoundException::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "NamespaceNotFoundException(";
+  out << "msg=" << to_string(msg);
+  out << ")";
+}
+
+const char* NamespaceNotFoundException::what() const throw() {
+  try {
+    std::stringstream ss;
+    ss << "TException - service has thrown: " << *this;
+    this->thriftTExceptionMessageHolder_ = ss.str();
+    return this->thriftTExceptionMessageHolder_.c_str();
+  } catch (const std::exception&) {
+    return "TException - service has thrown: NamespaceNotFoundException";
+  }
+}
+
+
+NamespaceNotEmptyException::~NamespaceNotEmptyException() throw() {
+}
+
+
+void NamespaceNotEmptyException::__set_msg(const std::string& val) {
+  this->msg = val;
+}
+
+uint32_t NamespaceNotEmptyException::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->msg);
+          this->__isset.msg = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t NamespaceNotEmptyException::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("NamespaceNotEmptyException");
+
+  xfer += oprot->writeFieldBegin("msg", ::apache::thrift::protocol::T_STRING, 1);
+  xfer += oprot->writeString(this->msg);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(NamespaceNotEmptyException &a, NamespaceNotEmptyException &b) {
+  using ::std::swap;
+  swap(a.msg, b.msg);
+  swap(a.__isset, b.__isset);
+}
+
+NamespaceNotEmptyException::NamespaceNotEmptyException(const NamespaceNotEmptyException& other193) : TException() {
+  msg = other193.msg;
+  __isset = other193.__isset;
+}
+NamespaceNotEmptyException& NamespaceNotEmptyException::operator=(const NamespaceNotEmptyException& other194) {
+  msg = other194.msg;
+  __isset = other194.__isset;
+  return *this;
+}
+void NamespaceNotEmptyException::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "NamespaceNotEmptyException(";
+  out << "msg=" << to_string(msg);
+  out << ")";
+}
+
+const char* NamespaceNotEmptyException::what() const throw() {
+  try {
+    std::stringstream ss;
+    ss << "TException - service has thrown: " << *this;
+    this->thriftTExceptionMessageHolder_ = ss.str();
+    return this->thriftTExceptionMessageHolder_.c_str();
+  } catch (const std::exception&) {
+    return "TException - service has thrown: NamespaceNotEmptyException";
+  }
+}
+
 } // namespace

http://git-wip-us.apache.org/repos/asf/accumulo/blob/8839fe51/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 f7cce4c..e5daf2e 100644
--- a/proxy/src/main/cpp/proxy_types.h
+++ b/proxy/src/main/cpp/proxy_types.h
@@ -76,6 +76,22 @@ struct SystemPermission {
 
 extern const std::map<int, const char*> _SystemPermission_VALUES_TO_NAMES;
 
+struct NamespacePermission {
+  enum type {
+    READ = 0,
+    WRITE = 1,
+    ALTER_NAMESPACE = 2,
+    GRANT = 3,
+    ALTER_TABLE = 4,
+    CREATE_TABLE = 5,
+    DROP_TABLE = 6,
+    BULK_IMPORT = 7,
+    DROP_NAMESPACE = 8
+  };
+};
+
+extern const std::map<int, const char*> _NamespacePermission_VALUES_TO_NAMES;
+
 struct ScanType {
   enum type {
     SINGLE = 0,
@@ -217,6 +233,12 @@ class TableExistsException;
 
 class MutationsRejectedException;
 
+class NamespaceExistsException;
+
+class NamespaceNotFoundException;
+
+class NamespaceNotEmptyException;
+
 typedef struct _Key__isset {
   _Key__isset() : row(false), colFamily(false), colQualifier(false), colVisibility(false), timestamp(true) {}
   bool row :1;
@@ -1955,6 +1977,150 @@ inline std::ostream& operator<<(std::ostream& out, const MutationsRejectedExcept
   return out;
 }
 
+typedef struct _NamespaceExistsException__isset {
+  _NamespaceExistsException__isset() : msg(false) {}
+  bool msg :1;
+} _NamespaceExistsException__isset;
+
+class NamespaceExistsException : public ::apache::thrift::TException {
+ public:
+
+  NamespaceExistsException(const NamespaceExistsException&);
+  NamespaceExistsException& operator=(const NamespaceExistsException&);
+  NamespaceExistsException() : msg() {
+  }
+
+  virtual ~NamespaceExistsException() throw();
+  std::string msg;
+
+  _NamespaceExistsException__isset __isset;
+
+  void __set_msg(const std::string& val);
+
+  bool operator == (const NamespaceExistsException & rhs) const
+  {
+    if (!(msg == rhs.msg))
+      return false;
+    return true;
+  }
+  bool operator != (const NamespaceExistsException &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const NamespaceExistsException & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+  virtual void printTo(std::ostream& out) const;
+  mutable std::string thriftTExceptionMessageHolder_;
+  const char* what() const throw();
+};
+
+void swap(NamespaceExistsException &a, NamespaceExistsException &b);
+
+inline std::ostream& operator<<(std::ostream& out, const NamespaceExistsException& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
+typedef struct _NamespaceNotFoundException__isset {
+  _NamespaceNotFoundException__isset() : msg(false) {}
+  bool msg :1;
+} _NamespaceNotFoundException__isset;
+
+class NamespaceNotFoundException : public ::apache::thrift::TException {
+ public:
+
+  NamespaceNotFoundException(const NamespaceNotFoundException&);
+  NamespaceNotFoundException& operator=(const NamespaceNotFoundException&);
+  NamespaceNotFoundException() : msg() {
+  }
+
+  virtual ~NamespaceNotFoundException() throw();
+  std::string msg;
+
+  _NamespaceNotFoundException__isset __isset;
+
+  void __set_msg(const std::string& val);
+
+  bool operator == (const NamespaceNotFoundException & rhs) const
+  {
+    if (!(msg == rhs.msg))
+      return false;
+    return true;
+  }
+  bool operator != (const NamespaceNotFoundException &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const NamespaceNotFoundException & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+  virtual void printTo(std::ostream& out) const;
+  mutable std::string thriftTExceptionMessageHolder_;
+  const char* what() const throw();
+};
+
+void swap(NamespaceNotFoundException &a, NamespaceNotFoundException &b);
+
+inline std::ostream& operator<<(std::ostream& out, const NamespaceNotFoundException& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
+typedef struct _NamespaceNotEmptyException__isset {
+  _NamespaceNotEmptyException__isset() : msg(false) {}
+  bool msg :1;
+} _NamespaceNotEmptyException__isset;
+
+class NamespaceNotEmptyException : public ::apache::thrift::TException {
+ public:
+
+  NamespaceNotEmptyException(const NamespaceNotEmptyException&);
+  NamespaceNotEmptyException& operator=(const NamespaceNotEmptyException&);
+  NamespaceNotEmptyException() : msg() {
+  }
+
+  virtual ~NamespaceNotEmptyException() throw();
+  std::string msg;
+
+  _NamespaceNotEmptyException__isset __isset;
+
+  void __set_msg(const std::string& val);
+
+  bool operator == (const NamespaceNotEmptyException & rhs) const
+  {
+    if (!(msg == rhs.msg))
+      return false;
+    return true;
+  }
+  bool operator != (const NamespaceNotEmptyException &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const NamespaceNotEmptyException & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+  virtual void printTo(std::ostream& out) const;
+  mutable std::string thriftTExceptionMessageHolder_;
+  const char* what() const throw();
+};
+
+void swap(NamespaceNotEmptyException &a, NamespaceNotEmptyException &b);
+
+inline std::ostream& operator<<(std::ostream& out, const NamespaceNotEmptyException& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
 } // namespace
 
 #endif

http://git-wip-us.apache.org/repos/asf/accumulo/blob/8839fe51/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java
----------------------------------------------------------------------
diff --git a/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java b/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java
index 9750db5..7e2c312 100644
--- a/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java
+++ b/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java
@@ -26,6 +26,7 @@ import java.util.EnumSet;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -49,6 +50,9 @@ import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.IteratorSetting;
 import org.apache.accumulo.core.client.MutationsRejectedException;
+import org.apache.accumulo.core.client.NamespaceExistsException;
+import org.apache.accumulo.core.client.NamespaceNotEmptyException;
+import org.apache.accumulo.core.client.NamespaceNotFoundException;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.ScannerBase;
 import org.apache.accumulo.core.client.TableExistsException;
@@ -60,6 +64,7 @@ import org.apache.accumulo.core.client.admin.CompactionConfig;
 import org.apache.accumulo.core.client.admin.NewTableConfiguration;
 import org.apache.accumulo.core.client.admin.TimeType;
 import org.apache.accumulo.core.client.impl.Credentials;
+import org.apache.accumulo.core.client.impl.Namespaces;
 import org.apache.accumulo.core.client.impl.thrift.TableOperationExceptionType;
 import org.apache.accumulo.core.client.impl.thrift.ThriftTableOperationException;
 import org.apache.accumulo.core.client.security.SecurityErrorCode;
@@ -76,6 +81,7 @@ import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope;
 import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.core.security.ColumnVisibility;
+import org.apache.accumulo.core.security.NamespacePermission;
 import org.apache.accumulo.core.security.SystemPermission;
 import org.apache.accumulo.core.security.TablePermission;
 import org.apache.accumulo.core.util.ByteBufferUtil;
@@ -309,6 +315,25 @@ public class ProxyServer implements AccumuloProxy.Iface {
     }
   }
 
+  private void handleExceptionNNF(Exception ex) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.NamespaceNotFoundException, TException {
+    try {
+      throw ex;
+    } catch (AccumuloException e) {
+      Throwable cause = e.getCause();
+      if (null != cause && NamespaceNotFoundException.class.equals(cause.getClass())) {
+        throw new org.apache.accumulo.proxy.thrift.NamespaceNotFoundException(cause.toString());
+      }
+      handleAccumuloException(e);
+    } catch (AccumuloSecurityException e) {
+      handleAccumuloSecurityException(e);
+    } catch (NamespaceNotFoundException e) {
+      throw new org.apache.accumulo.proxy.thrift.NamespaceNotFoundException(ex.toString());
+    } catch (Exception e) {
+      throw new org.apache.accumulo.proxy.thrift.AccumuloException(e.toString());
+    }
+  }
+
   private void handleException(Exception ex) throws org.apache.accumulo.proxy.thrift.AccumuloException,
       org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
     try {
@@ -977,6 +1002,38 @@ public class ProxyServer implements AccumuloProxy.Iface {
     }
   }
 
+  @Override
+  public void grantNamespacePermission(ByteBuffer login, String user, String namespaceName, org.apache.accumulo.proxy.thrift.NamespacePermission perm)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
+    try {
+      getConnector(login).securityOperations().grantNamespacePermission(user, namespaceName, NamespacePermission.getPermissionById((byte) perm.getValue()));
+    } catch (Exception e) {
+      handleException(e);
+    }
+  }
+
+  @Override
+  public boolean hasNamespacePermission(ByteBuffer login, String user, String namespaceName, org.apache.accumulo.proxy.thrift.NamespacePermission perm)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
+    try {
+      return getConnector(login).securityOperations()
+          .hasNamespacePermission(user, namespaceName, NamespacePermission.getPermissionById((byte) perm.getValue()));
+    } catch (Exception e) {
+      handleException(e);
+      return false;
+    }
+  }
+
+  @Override
+  public void revokeNamespacePermission(ByteBuffer login, String user, String namespaceName, org.apache.accumulo.proxy.thrift.NamespacePermission perm)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
+    try {
+      getConnector(login).securityOperations().revokeNamespacePermission(user, namespaceName, NamespacePermission.getPermissionById((byte) perm.getValue()));
+    } catch (Exception e) {
+      handleException(e);
+    }
+  }
+
   private Authorizations getAuthorizations(Set<ByteBuffer> authorizations) {
     List<String> auths = new ArrayList<String>();
     for (ByteBuffer bbauth : authorizations) {
@@ -1549,6 +1606,238 @@ public class ProxyServer implements AccumuloProxy.Iface {
   }
 
   @Override
+  public String systemNamespace() throws TException {
+    return Namespaces.ACCUMULO_NAMESPACE;
+  }
+
+  @Override
+  public String defaultNamespace() throws TException {
+    return Namespaces.DEFAULT_NAMESPACE;
+  }
+
+  @Override
+  public List<String> listNamespaces(ByteBuffer login) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
+    try {
+      return new LinkedList<>(getConnector(login).namespaceOperations().list());
+    } catch (Exception e) {
+      handleException(e);
+      return null;
+    }
+  }
+
+  @Override
+  public boolean namespaceExists(ByteBuffer login, String namespaceName) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
+    try {
+      return getConnector(login).namespaceOperations().exists(namespaceName);
+    } catch (Exception e) {
+      handleException(e);
+      return false;
+    }
+  }
+
+  @Override
+  public void createNamespace(ByteBuffer login, String namespaceName) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.NamespaceExistsException, TException {
+    try {
+      getConnector(login).namespaceOperations().create(namespaceName);
+    } catch (NamespaceExistsException e) {
+      throw new org.apache.accumulo.proxy.thrift.NamespaceExistsException(e.toString());
+    } catch (Exception e) {
+      handleException(e);
+    }
+  }
+
+  @Override
+  public void deleteNamespace(ByteBuffer login, String namespaceName) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.NamespaceNotFoundException,
+      org.apache.accumulo.proxy.thrift.NamespaceNotEmptyException, TException {
+    try {
+      getConnector(login).namespaceOperations().delete(namespaceName);
+    } catch (NamespaceNotFoundException e) {
+      throw new org.apache.accumulo.proxy.thrift.NamespaceNotFoundException(e.toString());
+    } catch (NamespaceNotEmptyException e) {
+      throw new org.apache.accumulo.proxy.thrift.NamespaceNotEmptyException(e.toString());
+    } catch (Exception e) {
+      handleException(e);
+    }
+  }
+
+  @Override
+  public void renameNamespace(ByteBuffer login, String oldNamespaceName, String newNamespaceName) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.NamespaceNotFoundException,
+      org.apache.accumulo.proxy.thrift.NamespaceExistsException, TException {
+    try {
+      getConnector(login).namespaceOperations().rename(oldNamespaceName, newNamespaceName);
+    } catch (NamespaceNotFoundException e) {
+      throw new org.apache.accumulo.proxy.thrift.NamespaceNotFoundException(e.toString());
+    } catch (NamespaceExistsException e) {
+      throw new org.apache.accumulo.proxy.thrift.NamespaceExistsException(e.toString());
+    } catch (Exception e) {
+      handleException(e);
+    }
+  }
+
+  @Override
+  public void setNamespaceProperty(ByteBuffer login, String namespaceName, String property, String value)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      org.apache.accumulo.proxy.thrift.NamespaceNotFoundException, TException {
+    try {
+      getConnector(login).namespaceOperations().setProperty(namespaceName, property, value);
+    } catch (Exception e) {
+      handleExceptionNNF(e);
+    }
+  }
+
+  @Override
+  public void removeNamespaceProperty(ByteBuffer login, String namespaceName, String property) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.NamespaceNotFoundException, TException {
+    try {
+      getConnector(login).namespaceOperations().removeProperty(namespaceName, property);
+    } catch (Exception e) {
+      handleExceptionNNF(e);
+    }
+  }
+
+  @Override
+  public Map<String,String> getNamespaceProperties(ByteBuffer login, String namespaceName) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.NamespaceNotFoundException, TException {
+    try {
+      Map<String,String> props = new HashMap<>();
+      for (Map.Entry<String,String> entry : getConnector(login).namespaceOperations().getProperties(namespaceName)) {
+        props.put(entry.getKey(), entry.getValue());
+      }
+      return props;
+    } catch (Exception e) {
+      handleExceptionNNF(e);
+      return null;
+    }
+  }
+
+  @Override
+  public Map<String,String> namespaceIdMap(ByteBuffer login) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
+    try {
+      return getConnector(login).namespaceOperations().namespaceIdMap();
+    } catch (Exception e) {
+      handleException(e);
+      return null;
+    }
+  }
+
+  @Override
+  public void attachNamespaceIterator(ByteBuffer login, String namespaceName, org.apache.accumulo.proxy.thrift.IteratorSetting setting,
+      Set<org.apache.accumulo.proxy.thrift.IteratorScope> scopes) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.NamespaceNotFoundException, TException {
+    try {
+      if (null != scopes && scopes.size() > 0) {
+        getConnector(login).namespaceOperations().attachIterator(namespaceName, getIteratorSetting(setting), getIteratorScopes(scopes));
+      } else {
+        getConnector(login).namespaceOperations().attachIterator(namespaceName, getIteratorSetting(setting));
+      }
+    } catch (Exception e) {
+      handleExceptionNNF(e);
+    }
+  }
+
+  @Override
+  public void removeNamespaceIterator(ByteBuffer login, String namespaceName, String name, Set<org.apache.accumulo.proxy.thrift.IteratorScope> scopes)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      org.apache.accumulo.proxy.thrift.NamespaceNotFoundException, TException {
+    try {
+      getConnector(login).namespaceOperations().removeIterator(namespaceName, name, getIteratorScopes(scopes));
+    } catch (Exception e) {
+      handleExceptionNNF(e);
+    }
+  }
+
+  @Override
+  public org.apache.accumulo.proxy.thrift.IteratorSetting getNamespaceIteratorSetting(ByteBuffer login, String namespaceName, String name,
+      org.apache.accumulo.proxy.thrift.IteratorScope scope) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.NamespaceNotFoundException, TException {
+    try {
+      IteratorSetting setting = getConnector(login).namespaceOperations().getIteratorSetting(namespaceName, name, getIteratorScope(scope));
+      return new org.apache.accumulo.proxy.thrift.IteratorSetting(setting.getPriority(), setting.getName(), setting.getIteratorClass(), setting.getOptions());
+    } catch (Exception e) {
+      handleExceptionNNF(e);
+      return null;
+    }
+  }
+
+  @Override
+  public Map<String,Set<org.apache.accumulo.proxy.thrift.IteratorScope>> listNamespaceIterators(ByteBuffer login, String namespaceName)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      org.apache.accumulo.proxy.thrift.NamespaceNotFoundException, TException {
+    try {
+      Map<String,Set<org.apache.accumulo.proxy.thrift.IteratorScope>> namespaceIters = new HashMap<>();
+      for (Map.Entry<String,EnumSet<IteratorScope>> entry : getConnector(login).namespaceOperations().listIterators(namespaceName).entrySet()) {
+        namespaceIters.put(entry.getKey(), getProxyIteratorScopes(entry.getValue()));
+      }
+      return namespaceIters;
+    } catch (Exception e) {
+      handleExceptionNNF(e);
+      return null;
+    }
+  }
+
+  @Override
+  public void checkNamespaceIteratorConflicts(ByteBuffer login, String namespaceName, org.apache.accumulo.proxy.thrift.IteratorSetting setting,
+      Set<org.apache.accumulo.proxy.thrift.IteratorScope> scopes) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.NamespaceNotFoundException, TException {
+    try {
+      getConnector(login).namespaceOperations().checkIteratorConflicts(namespaceName, getIteratorSetting(setting), getIteratorScopes(scopes));
+    } catch (Exception e) {
+      handleExceptionNNF(e);
+    }
+  }
+
+  @Override
+  public int addNamespaceConstraint(ByteBuffer login, String namespaceName, String constraintClassName)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      org.apache.accumulo.proxy.thrift.NamespaceNotFoundException, TException {
+    try {
+      return getConnector(login).namespaceOperations().addConstraint(namespaceName, constraintClassName);
+    } catch (Exception e) {
+      handleExceptionNNF(e);
+      return -1;
+    }
+  }
+
+  @Override
+  public void removeNamespaceConstraint(ByteBuffer login, String namespaceName, int id) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.NamespaceNotFoundException, TException {
+    try {
+      getConnector(login).namespaceOperations().removeConstraint(namespaceName, id);
+    } catch (Exception e) {
+      handleExceptionNNF(e);
+    }
+  }
+
+  @Override
+  public Map<String,Integer> listNamespaceConstraints(ByteBuffer login, String namespaceName) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.NamespaceNotFoundException, TException {
+    try {
+      return getConnector(login).namespaceOperations().listConstraints(namespaceName);
+    } catch (Exception e) {
+      handleExceptionNNF(e);
+      return null;
+    }
+  }
+
+  @Override
+  public boolean testNamespaceClassLoad(ByteBuffer login, String namespaceName, String className, String asTypeName)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      org.apache.accumulo.proxy.thrift.NamespaceNotFoundException, TException {
+    try {
+      return getConnector(login).namespaceOperations().testClassLoad(namespaceName, className, asTypeName);
+    } catch (Exception e) {
+      handleExceptionNNF(e);
+      return false;
+    }
+  }
+
+  @Override
   public void pingTabletServer(ByteBuffer login, String tserver) throws org.apache.accumulo.proxy.thrift.AccumuloException,
       org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
     try {


[4/9] accumulo git commit: ACCUMULO-4147 Add Accumulo Namespace Operations to Proxy

Posted by kt...@apache.org.
http://git-wip-us.apache.org/repos/asf/accumulo/blob/8839fe51/proxy/src/main/java/org/apache/accumulo/proxy/thrift/NamespaceExistsException.java
----------------------------------------------------------------------
diff --git a/proxy/src/main/java/org/apache/accumulo/proxy/thrift/NamespaceExistsException.java b/proxy/src/main/java/org/apache/accumulo/proxy/thrift/NamespaceExistsException.java
new file mode 100644
index 0000000..db1a380
--- /dev/null
+++ b/proxy/src/main/java/org/apache/accumulo/proxy/thrift/NamespaceExistsException.java
@@ -0,0 +1,414 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.accumulo.proxy.thrift;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
+public class NamespaceExistsException extends TException implements org.apache.thrift.TBase<NamespaceExistsException, NamespaceExistsException._Fields>, java.io.Serializable, Cloneable, Comparable<NamespaceExistsException> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("NamespaceExistsException");
+
+  private static final org.apache.thrift.protocol.TField MSG_FIELD_DESC = new org.apache.thrift.protocol.TField("msg", org.apache.thrift.protocol.TType.STRING, (short)1);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new NamespaceExistsExceptionStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new NamespaceExistsExceptionTupleSchemeFactory());
+  }
+
+  public String msg; // required
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    MSG((short)1, "msg");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // MSG
+          return MSG;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.MSG, new org.apache.thrift.meta_data.FieldMetaData("msg", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(NamespaceExistsException.class, metaDataMap);
+  }
+
+  public NamespaceExistsException() {
+  }
+
+  public NamespaceExistsException(
+    String msg)
+  {
+    this();
+    this.msg = msg;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public NamespaceExistsException(NamespaceExistsException other) {
+    if (other.isSetMsg()) {
+      this.msg = other.msg;
+    }
+  }
+
+  public NamespaceExistsException deepCopy() {
+    return new NamespaceExistsException(this);
+  }
+
+  @Override
+  public void clear() {
+    this.msg = null;
+  }
+
+  public String getMsg() {
+    return this.msg;
+  }
+
+  public NamespaceExistsException setMsg(String msg) {
+    this.msg = msg;
+    return this;
+  }
+
+  public void unsetMsg() {
+    this.msg = null;
+  }
+
+  /** Returns true if field msg is set (has been assigned a value) and false otherwise */
+  public boolean isSetMsg() {
+    return this.msg != null;
+  }
+
+  public void setMsgIsSet(boolean value) {
+    if (!value) {
+      this.msg = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case MSG:
+      if (value == null) {
+        unsetMsg();
+      } else {
+        setMsg((String)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case MSG:
+      return getMsg();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case MSG:
+      return isSetMsg();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof NamespaceExistsException)
+      return this.equals((NamespaceExistsException)that);
+    return false;
+  }
+
+  public boolean equals(NamespaceExistsException that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_msg = true && this.isSetMsg();
+    boolean that_present_msg = true && that.isSetMsg();
+    if (this_present_msg || that_present_msg) {
+      if (!(this_present_msg && that_present_msg))
+        return false;
+      if (!this.msg.equals(that.msg))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_msg = true && (isSetMsg());
+    list.add(present_msg);
+    if (present_msg)
+      list.add(msg);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(NamespaceExistsException other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetMsg()).compareTo(other.isSetMsg());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetMsg()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.msg, other.msg);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("NamespaceExistsException(");
+    boolean first = true;
+
+    sb.append("msg:");
+    if (this.msg == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.msg);
+    }
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    // check for sub-struct validity
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private static class NamespaceExistsExceptionStandardSchemeFactory implements SchemeFactory {
+    public NamespaceExistsExceptionStandardScheme getScheme() {
+      return new NamespaceExistsExceptionStandardScheme();
+    }
+  }
+
+  private static class NamespaceExistsExceptionStandardScheme extends StandardScheme<NamespaceExistsException> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, NamespaceExistsException struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField schemeField;
+      iprot.readStructBegin();
+      while (true)
+      {
+        schemeField = iprot.readFieldBegin();
+        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (schemeField.id) {
+          case 1: // MSG
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.msg = iprot.readString();
+              struct.setMsgIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+
+      // check for required fields of primitive type, which can't be checked in the validate method
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, NamespaceExistsException struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.msg != null) {
+        oprot.writeFieldBegin(MSG_FIELD_DESC);
+        oprot.writeString(struct.msg);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class NamespaceExistsExceptionTupleSchemeFactory implements SchemeFactory {
+    public NamespaceExistsExceptionTupleScheme getScheme() {
+      return new NamespaceExistsExceptionTupleScheme();
+    }
+  }
+
+  private static class NamespaceExistsExceptionTupleScheme extends TupleScheme<NamespaceExistsException> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, NamespaceExistsException struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      BitSet optionals = new BitSet();
+      if (struct.isSetMsg()) {
+        optionals.set(0);
+      }
+      oprot.writeBitSet(optionals, 1);
+      if (struct.isSetMsg()) {
+        oprot.writeString(struct.msg);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, NamespaceExistsException struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      BitSet incoming = iprot.readBitSet(1);
+      if (incoming.get(0)) {
+        struct.msg = iprot.readString();
+        struct.setMsgIsSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/accumulo/blob/8839fe51/proxy/src/main/java/org/apache/accumulo/proxy/thrift/NamespaceNotEmptyException.java
----------------------------------------------------------------------
diff --git a/proxy/src/main/java/org/apache/accumulo/proxy/thrift/NamespaceNotEmptyException.java b/proxy/src/main/java/org/apache/accumulo/proxy/thrift/NamespaceNotEmptyException.java
new file mode 100644
index 0000000..f22320e
--- /dev/null
+++ b/proxy/src/main/java/org/apache/accumulo/proxy/thrift/NamespaceNotEmptyException.java
@@ -0,0 +1,414 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.accumulo.proxy.thrift;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
+public class NamespaceNotEmptyException extends TException implements org.apache.thrift.TBase<NamespaceNotEmptyException, NamespaceNotEmptyException._Fields>, java.io.Serializable, Cloneable, Comparable<NamespaceNotEmptyException> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("NamespaceNotEmptyException");
+
+  private static final org.apache.thrift.protocol.TField MSG_FIELD_DESC = new org.apache.thrift.protocol.TField("msg", org.apache.thrift.protocol.TType.STRING, (short)1);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new NamespaceNotEmptyExceptionStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new NamespaceNotEmptyExceptionTupleSchemeFactory());
+  }
+
+  public String msg; // required
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    MSG((short)1, "msg");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // MSG
+          return MSG;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.MSG, new org.apache.thrift.meta_data.FieldMetaData("msg", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(NamespaceNotEmptyException.class, metaDataMap);
+  }
+
+  public NamespaceNotEmptyException() {
+  }
+
+  public NamespaceNotEmptyException(
+    String msg)
+  {
+    this();
+    this.msg = msg;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public NamespaceNotEmptyException(NamespaceNotEmptyException other) {
+    if (other.isSetMsg()) {
+      this.msg = other.msg;
+    }
+  }
+
+  public NamespaceNotEmptyException deepCopy() {
+    return new NamespaceNotEmptyException(this);
+  }
+
+  @Override
+  public void clear() {
+    this.msg = null;
+  }
+
+  public String getMsg() {
+    return this.msg;
+  }
+
+  public NamespaceNotEmptyException setMsg(String msg) {
+    this.msg = msg;
+    return this;
+  }
+
+  public void unsetMsg() {
+    this.msg = null;
+  }
+
+  /** Returns true if field msg is set (has been assigned a value) and false otherwise */
+  public boolean isSetMsg() {
+    return this.msg != null;
+  }
+
+  public void setMsgIsSet(boolean value) {
+    if (!value) {
+      this.msg = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case MSG:
+      if (value == null) {
+        unsetMsg();
+      } else {
+        setMsg((String)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case MSG:
+      return getMsg();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case MSG:
+      return isSetMsg();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof NamespaceNotEmptyException)
+      return this.equals((NamespaceNotEmptyException)that);
+    return false;
+  }
+
+  public boolean equals(NamespaceNotEmptyException that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_msg = true && this.isSetMsg();
+    boolean that_present_msg = true && that.isSetMsg();
+    if (this_present_msg || that_present_msg) {
+      if (!(this_present_msg && that_present_msg))
+        return false;
+      if (!this.msg.equals(that.msg))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_msg = true && (isSetMsg());
+    list.add(present_msg);
+    if (present_msg)
+      list.add(msg);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(NamespaceNotEmptyException other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetMsg()).compareTo(other.isSetMsg());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetMsg()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.msg, other.msg);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("NamespaceNotEmptyException(");
+    boolean first = true;
+
+    sb.append("msg:");
+    if (this.msg == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.msg);
+    }
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    // check for sub-struct validity
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private static class NamespaceNotEmptyExceptionStandardSchemeFactory implements SchemeFactory {
+    public NamespaceNotEmptyExceptionStandardScheme getScheme() {
+      return new NamespaceNotEmptyExceptionStandardScheme();
+    }
+  }
+
+  private static class NamespaceNotEmptyExceptionStandardScheme extends StandardScheme<NamespaceNotEmptyException> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, NamespaceNotEmptyException struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField schemeField;
+      iprot.readStructBegin();
+      while (true)
+      {
+        schemeField = iprot.readFieldBegin();
+        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (schemeField.id) {
+          case 1: // MSG
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.msg = iprot.readString();
+              struct.setMsgIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+
+      // check for required fields of primitive type, which can't be checked in the validate method
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, NamespaceNotEmptyException struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.msg != null) {
+        oprot.writeFieldBegin(MSG_FIELD_DESC);
+        oprot.writeString(struct.msg);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class NamespaceNotEmptyExceptionTupleSchemeFactory implements SchemeFactory {
+    public NamespaceNotEmptyExceptionTupleScheme getScheme() {
+      return new NamespaceNotEmptyExceptionTupleScheme();
+    }
+  }
+
+  private static class NamespaceNotEmptyExceptionTupleScheme extends TupleScheme<NamespaceNotEmptyException> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, NamespaceNotEmptyException struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      BitSet optionals = new BitSet();
+      if (struct.isSetMsg()) {
+        optionals.set(0);
+      }
+      oprot.writeBitSet(optionals, 1);
+      if (struct.isSetMsg()) {
+        oprot.writeString(struct.msg);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, NamespaceNotEmptyException struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      BitSet incoming = iprot.readBitSet(1);
+      if (incoming.get(0)) {
+        struct.msg = iprot.readString();
+        struct.setMsgIsSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/accumulo/blob/8839fe51/proxy/src/main/java/org/apache/accumulo/proxy/thrift/NamespaceNotFoundException.java
----------------------------------------------------------------------
diff --git a/proxy/src/main/java/org/apache/accumulo/proxy/thrift/NamespaceNotFoundException.java b/proxy/src/main/java/org/apache/accumulo/proxy/thrift/NamespaceNotFoundException.java
new file mode 100644
index 0000000..9e31e48
--- /dev/null
+++ b/proxy/src/main/java/org/apache/accumulo/proxy/thrift/NamespaceNotFoundException.java
@@ -0,0 +1,414 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.accumulo.proxy.thrift;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
+public class NamespaceNotFoundException extends TException implements org.apache.thrift.TBase<NamespaceNotFoundException, NamespaceNotFoundException._Fields>, java.io.Serializable, Cloneable, Comparable<NamespaceNotFoundException> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("NamespaceNotFoundException");
+
+  private static final org.apache.thrift.protocol.TField MSG_FIELD_DESC = new org.apache.thrift.protocol.TField("msg", org.apache.thrift.protocol.TType.STRING, (short)1);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new NamespaceNotFoundExceptionStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new NamespaceNotFoundExceptionTupleSchemeFactory());
+  }
+
+  public String msg; // required
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    MSG((short)1, "msg");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // MSG
+          return MSG;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.MSG, new org.apache.thrift.meta_data.FieldMetaData("msg", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(NamespaceNotFoundException.class, metaDataMap);
+  }
+
+  public NamespaceNotFoundException() {
+  }
+
+  public NamespaceNotFoundException(
+    String msg)
+  {
+    this();
+    this.msg = msg;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public NamespaceNotFoundException(NamespaceNotFoundException other) {
+    if (other.isSetMsg()) {
+      this.msg = other.msg;
+    }
+  }
+
+  public NamespaceNotFoundException deepCopy() {
+    return new NamespaceNotFoundException(this);
+  }
+
+  @Override
+  public void clear() {
+    this.msg = null;
+  }
+
+  public String getMsg() {
+    return this.msg;
+  }
+
+  public NamespaceNotFoundException setMsg(String msg) {
+    this.msg = msg;
+    return this;
+  }
+
+  public void unsetMsg() {
+    this.msg = null;
+  }
+
+  /** Returns true if field msg is set (has been assigned a value) and false otherwise */
+  public boolean isSetMsg() {
+    return this.msg != null;
+  }
+
+  public void setMsgIsSet(boolean value) {
+    if (!value) {
+      this.msg = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case MSG:
+      if (value == null) {
+        unsetMsg();
+      } else {
+        setMsg((String)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case MSG:
+      return getMsg();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case MSG:
+      return isSetMsg();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof NamespaceNotFoundException)
+      return this.equals((NamespaceNotFoundException)that);
+    return false;
+  }
+
+  public boolean equals(NamespaceNotFoundException that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_msg = true && this.isSetMsg();
+    boolean that_present_msg = true && that.isSetMsg();
+    if (this_present_msg || that_present_msg) {
+      if (!(this_present_msg && that_present_msg))
+        return false;
+      if (!this.msg.equals(that.msg))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_msg = true && (isSetMsg());
+    list.add(present_msg);
+    if (present_msg)
+      list.add(msg);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(NamespaceNotFoundException other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetMsg()).compareTo(other.isSetMsg());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetMsg()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.msg, other.msg);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("NamespaceNotFoundException(");
+    boolean first = true;
+
+    sb.append("msg:");
+    if (this.msg == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.msg);
+    }
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    // check for sub-struct validity
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private static class NamespaceNotFoundExceptionStandardSchemeFactory implements SchemeFactory {
+    public NamespaceNotFoundExceptionStandardScheme getScheme() {
+      return new NamespaceNotFoundExceptionStandardScheme();
+    }
+  }
+
+  private static class NamespaceNotFoundExceptionStandardScheme extends StandardScheme<NamespaceNotFoundException> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, NamespaceNotFoundException struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField schemeField;
+      iprot.readStructBegin();
+      while (true)
+      {
+        schemeField = iprot.readFieldBegin();
+        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (schemeField.id) {
+          case 1: // MSG
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.msg = iprot.readString();
+              struct.setMsgIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+
+      // check for required fields of primitive type, which can't be checked in the validate method
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, NamespaceNotFoundException struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.msg != null) {
+        oprot.writeFieldBegin(MSG_FIELD_DESC);
+        oprot.writeString(struct.msg);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class NamespaceNotFoundExceptionTupleSchemeFactory implements SchemeFactory {
+    public NamespaceNotFoundExceptionTupleScheme getScheme() {
+      return new NamespaceNotFoundExceptionTupleScheme();
+    }
+  }
+
+  private static class NamespaceNotFoundExceptionTupleScheme extends TupleScheme<NamespaceNotFoundException> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, NamespaceNotFoundException struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      BitSet optionals = new BitSet();
+      if (struct.isSetMsg()) {
+        optionals.set(0);
+      }
+      oprot.writeBitSet(optionals, 1);
+      if (struct.isSetMsg()) {
+        oprot.writeString(struct.msg);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, NamespaceNotFoundException struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      BitSet incoming = iprot.readBitSet(1);
+      if (incoming.get(0)) {
+        struct.msg = iprot.readString();
+        struct.setMsgIsSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/accumulo/blob/8839fe51/proxy/src/main/java/org/apache/accumulo/proxy/thrift/NamespacePermission.java
----------------------------------------------------------------------
diff --git a/proxy/src/main/java/org/apache/accumulo/proxy/thrift/NamespacePermission.java b/proxy/src/main/java/org/apache/accumulo/proxy/thrift/NamespacePermission.java
new file mode 100644
index 0000000..6d790f6
--- /dev/null
+++ b/proxy/src/main/java/org/apache/accumulo/proxy/thrift/NamespacePermission.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.accumulo.proxy.thrift;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import org.apache.thrift.TEnum;
+
+@SuppressWarnings({"unused"}) public enum NamespacePermission implements org.apache.thrift.TEnum {
+  READ(0),
+  WRITE(1),
+  ALTER_NAMESPACE(2),
+  GRANT(3),
+  ALTER_TABLE(4),
+  CREATE_TABLE(5),
+  DROP_TABLE(6),
+  BULK_IMPORT(7),
+  DROP_NAMESPACE(8);
+
+  private final int value;
+
+  private NamespacePermission(int value) {
+    this.value = value;
+  }
+
+  /**
+   * Get the integer value of this enum value, as defined in the Thrift IDL.
+   */
+  public int getValue() {
+    return value;
+  }
+
+  /**
+   * Find a the enum type by its integer value, as defined in the Thrift IDL.
+   * @return null if the value is not found.
+   */
+  public static NamespacePermission findByValue(int value) { 
+    switch (value) {
+      case 0:
+        return READ;
+      case 1:
+        return WRITE;
+      case 2:
+        return ALTER_NAMESPACE;
+      case 3:
+        return GRANT;
+      case 4:
+        return ALTER_TABLE;
+      case 5:
+        return CREATE_TABLE;
+      case 6:
+        return DROP_TABLE;
+      case 7:
+        return BULK_IMPORT;
+      case 8:
+        return DROP_NAMESPACE;
+      default:
+        return null;
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/8839fe51/proxy/src/main/python/AccumuloProxy-remote
----------------------------------------------------------------------
diff --git a/proxy/src/main/python/AccumuloProxy-remote b/proxy/src/main/python/AccumuloProxy-remote
index 990f708..bc08e9b 100644
--- a/proxy/src/main/python/AccumuloProxy-remote
+++ b/proxy/src/main/python/AccumuloProxy-remote
@@ -98,6 +98,9 @@ if len(sys.argv) <= 1 or sys.argv[1] == '--help':
   print('   listLocalUsers(string login)')
   print('  void revokeSystemPermission(string login, string user, SystemPermission perm)')
   print('  void revokeTablePermission(string login, string user, string table, TablePermission perm)')
+  print('  void grantNamespacePermission(string login, string user, string namespaceName, NamespacePermission perm)')
+  print('  bool hasNamespacePermission(string login, string user, string namespaceName, NamespacePermission perm)')
+  print('  void revokeNamespacePermission(string login, string user, string namespaceName, NamespacePermission perm)')
   print('  string createBatchScanner(string login, string tableName, BatchScanOptions options)')
   print('  string createScanner(string login, string tableName, ScanOptions options)')
   print('  bool hasNext(string scanner)')
@@ -115,6 +118,26 @@ if len(sys.argv) <= 1 or sys.argv[1] == '--help':
   print('  void closeConditionalWriter(string conditionalWriter)')
   print('  Range getRowRange(string row)')
   print('  Key getFollowing(Key key, PartialKey part)')
+  print('  string systemNamespace()')
+  print('  string defaultNamespace()')
+  print('   listNamespaces(string login)')
+  print('  bool namespaceExists(string login, string namespaceName)')
+  print('  void createNamespace(string login, string namespaceName)')
+  print('  void deleteNamespace(string login, string namespaceName)')
+  print('  void renameNamespace(string login, string oldNamespaceName, string newNamespaceName)')
+  print('  void setNamespaceProperty(string login, string namespaceName, string property, string value)')
+  print('  void removeNamespaceProperty(string login, string namespaceName, string property)')
+  print('   getNamespaceProperties(string login, string namespaceName)')
+  print('   namespaceIdMap(string login)')
+  print('  void attachNamespaceIterator(string login, string namespaceName, IteratorSetting setting,  scopes)')
+  print('  void removeNamespaceIterator(string login, string namespaceName, string name,  scopes)')
+  print('  IteratorSetting getNamespaceIteratorSetting(string login, string namespaceName, string name, IteratorScope scope)')
+  print('   listNamespaceIterators(string login, string namespaceName)')
+  print('  void checkNamespaceIteratorConflicts(string login, string namespaceName, IteratorSetting setting,  scopes)')
+  print('  i32 addNamespaceConstraint(string login, string namespaceName, string constraintClassName)')
+  print('  void removeNamespaceConstraint(string login, string namespaceName, i32 id)')
+  print('   listNamespaceConstraints(string login, string namespaceName)')
+  print('  bool testNamespaceClassLoad(string login, string namespaceName, string className, string asTypeName)')
   print('')
   sys.exit(0)
 
@@ -531,6 +554,24 @@ elif cmd == 'revokeTablePermission':
     sys.exit(1)
   pp.pprint(client.revokeTablePermission(args[0],args[1],args[2],eval(args[3]),))
 
+elif cmd == 'grantNamespacePermission':
+  if len(args) != 4:
+    print('grantNamespacePermission requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.grantNamespacePermission(args[0],args[1],args[2],eval(args[3]),))
+
+elif cmd == 'hasNamespacePermission':
+  if len(args) != 4:
+    print('hasNamespacePermission requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.hasNamespacePermission(args[0],args[1],args[2],eval(args[3]),))
+
+elif cmd == 'revokeNamespacePermission':
+  if len(args) != 4:
+    print('revokeNamespacePermission requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.revokeNamespacePermission(args[0],args[1],args[2],eval(args[3]),))
+
 elif cmd == 'createBatchScanner':
   if len(args) != 3:
     print('createBatchScanner requires 3 args')
@@ -633,6 +674,126 @@ elif cmd == 'getFollowing':
     sys.exit(1)
   pp.pprint(client.getFollowing(eval(args[0]),eval(args[1]),))
 
+elif cmd == 'systemNamespace':
+  if len(args) != 0:
+    print('systemNamespace requires 0 args')
+    sys.exit(1)
+  pp.pprint(client.systemNamespace())
+
+elif cmd == 'defaultNamespace':
+  if len(args) != 0:
+    print('defaultNamespace requires 0 args')
+    sys.exit(1)
+  pp.pprint(client.defaultNamespace())
+
+elif cmd == 'listNamespaces':
+  if len(args) != 1:
+    print('listNamespaces requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.listNamespaces(args[0],))
+
+elif cmd == 'namespaceExists':
+  if len(args) != 2:
+    print('namespaceExists requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.namespaceExists(args[0],args[1],))
+
+elif cmd == 'createNamespace':
+  if len(args) != 2:
+    print('createNamespace requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.createNamespace(args[0],args[1],))
+
+elif cmd == 'deleteNamespace':
+  if len(args) != 2:
+    print('deleteNamespace requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteNamespace(args[0],args[1],))
+
+elif cmd == 'renameNamespace':
+  if len(args) != 3:
+    print('renameNamespace requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.renameNamespace(args[0],args[1],args[2],))
+
+elif cmd == 'setNamespaceProperty':
+  if len(args) != 4:
+    print('setNamespaceProperty requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.setNamespaceProperty(args[0],args[1],args[2],args[3],))
+
+elif cmd == 'removeNamespaceProperty':
+  if len(args) != 3:
+    print('removeNamespaceProperty requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.removeNamespaceProperty(args[0],args[1],args[2],))
+
+elif cmd == 'getNamespaceProperties':
+  if len(args) != 2:
+    print('getNamespaceProperties requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getNamespaceProperties(args[0],args[1],))
+
+elif cmd == 'namespaceIdMap':
+  if len(args) != 1:
+    print('namespaceIdMap requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.namespaceIdMap(args[0],))
+
+elif cmd == 'attachNamespaceIterator':
+  if len(args) != 4:
+    print('attachNamespaceIterator requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.attachNamespaceIterator(args[0],args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'removeNamespaceIterator':
+  if len(args) != 4:
+    print('removeNamespaceIterator requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.removeNamespaceIterator(args[0],args[1],args[2],eval(args[3]),))
+
+elif cmd == 'getNamespaceIteratorSetting':
+  if len(args) != 4:
+    print('getNamespaceIteratorSetting requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.getNamespaceIteratorSetting(args[0],args[1],args[2],eval(args[3]),))
+
+elif cmd == 'listNamespaceIterators':
+  if len(args) != 2:
+    print('listNamespaceIterators requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.listNamespaceIterators(args[0],args[1],))
+
+elif cmd == 'checkNamespaceIteratorConflicts':
+  if len(args) != 4:
+    print('checkNamespaceIteratorConflicts requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.checkNamespaceIteratorConflicts(args[0],args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'addNamespaceConstraint':
+  if len(args) != 3:
+    print('addNamespaceConstraint requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.addNamespaceConstraint(args[0],args[1],args[2],))
+
+elif cmd == 'removeNamespaceConstraint':
+  if len(args) != 3:
+    print('removeNamespaceConstraint requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.removeNamespaceConstraint(args[0],args[1],eval(args[2]),))
+
+elif cmd == 'listNamespaceConstraints':
+  if len(args) != 2:
+    print('listNamespaceConstraints requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.listNamespaceConstraints(args[0],args[1],))
+
+elif cmd == 'testNamespaceClassLoad':
+  if len(args) != 4:
+    print('testNamespaceClassLoad requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.testNamespaceClassLoad(args[0],args[1],args[2],args[3],))
+
 else:
   print('Unrecognized method %s' % cmd)
   sys.exit(1)