You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ee...@apache.org on 2010/08/30 23:14:35 UTC

svn commit: r990945 - in /cassandra/trunk/src/java/org/apache/cassandra: avro/CassandraServer.java thrift/CassandraServer.java

Author: eevans
Date: Mon Aug 30 21:14:34 2010
New Revision: 990945

URL: http://svn.apache.org/viewvc?rev=990945&view=rev
Log:
Convert to Permission usage in Thrift/Avro servers

Patch by Stu Hood; reviewed by eevans for CASSANDRA-1320

Modified:
    cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraServer.java
    cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java

Modified: cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraServer.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraServer.java?rev=990945&r1=990944&r2=990945&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraServer.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraServer.java Mon Aug 30 21:14:34 2010
@@ -45,6 +45,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.cassandra.auth.AllowAllAuthenticator;
+import org.apache.cassandra.auth.Permission;
 import org.apache.cassandra.concurrent.StageManager;
 import org.apache.cassandra.config.CFMetaData;
 import org.apache.cassandra.config.ColumnDefinition;
@@ -67,7 +68,6 @@ import org.apache.cassandra.scheduler.IR
 import org.apache.cassandra.service.ClientState;
 import org.apache.cassandra.service.StorageProxy;
 import org.apache.cassandra.service.StorageService;
-import org.apache.cassandra.thrift.AccessLevel;
 
 import static org.apache.cassandra.avro.AvroRecordFactory.*;
 import static org.apache.cassandra.avro.ErrorFactory.*;
@@ -713,7 +713,7 @@ public class CassandraServer implements 
     @Override
     public CharSequence system_add_column_family(CfDef cfDef) throws AvroRemoteException, InvalidRequestException
     {
-        checkKeyspaceAndLoginAuthorized(AccessLevel.FULL);
+        checkKeyspaceAndLoginAuthorized(Permission.WRITE);
         try
         {
             applyMigrationOnStage(new AddColumnFamily(convertToCFMetaData(cfDef)));
@@ -764,11 +764,11 @@ public class CassandraServer implements 
         return StorageProxy.checkSchemaAgreement();
     }
 
-    protected void checkKeyspaceAndLoginAuthorized(AccessLevel level) throws InvalidRequestException
+    protected void checkKeyspaceAndLoginAuthorized(Permission perm) throws InvalidRequestException
     {
         try
         {
-            clientState.hasKeyspaceAccess(level);
+            clientState.hasKeyspaceAccess(perm);
         }
         catch (org.apache.cassandra.thrift.InvalidRequestException e)
         {
@@ -887,7 +887,7 @@ public class CassandraServer implements 
     public CharSequence system_rename_column_family(CharSequence old_name, CharSequence new_name)
     throws AvroRemoteException, InvalidRequestException
     {
-        checkKeyspaceAndLoginAuthorized(AccessLevel.FULL);
+        checkKeyspaceAndLoginAuthorized(Permission.WRITE);
         
         try
         {
@@ -911,7 +911,7 @@ public class CassandraServer implements 
     @Override
     public CharSequence system_drop_column_family(CharSequence column_family) throws AvroRemoteException, InvalidRequestException
     {
-        checkKeyspaceAndLoginAuthorized(AccessLevel.FULL);
+        checkKeyspaceAndLoginAuthorized(Permission.WRITE);
         
         try
         {

Modified: cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java?rev=990945&r1=990944&r2=990945&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java Mon Aug 30 21:14:34 2010
@@ -30,7 +30,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.cassandra.auth.AllowAllAuthenticator;
-import org.apache.cassandra.auth.AuthenticatedUser;
+import org.apache.cassandra.auth.Permission;
 import org.apache.cassandra.concurrent.StageManager;
 import org.apache.cassandra.config.ConfigurationException;
 import org.apache.cassandra.config.KSMetaData;
@@ -61,7 +61,6 @@ import org.apache.thrift.TException;
 
 public class CassandraServer implements Cassandra.Iface
 {
-    public static String TOKEN_MAP = "token map";
     private static Logger logger = LoggerFactory.getLogger(CassandraServer.class);
 
     private final static List<ColumnOrSuperColumn> EMPTY_COLUMNS = Collections.emptyList();
@@ -252,7 +251,7 @@ public class CassandraServer implements 
         if (logger.isDebugEnabled())
             logger.debug("get_slice");
         
-        clientState.hasKeyspaceAccess(AccessLevel.READONLY);
+        clientState.hasKeyspaceAccess(Permission.READ_VALUE);
         return multigetSliceInternal(clientState.getKeyspace(), Arrays.asList(key), column_parent, predicate, consistency_level).get(key);
     }
     
@@ -262,7 +261,7 @@ public class CassandraServer implements 
         if (logger.isDebugEnabled())
             logger.debug("multiget_slice");
 
-        clientState.hasKeyspaceAccess(AccessLevel.READONLY);
+        clientState.hasKeyspaceAccess(Permission.READ_VALUE);
 
         return multigetSliceInternal(clientState.getKeyspace(), keys, column_parent, predicate, consistency_level);
     }
@@ -301,7 +300,7 @@ public class CassandraServer implements 
         if (logger.isDebugEnabled())
             logger.debug("get");
 
-        clientState.hasKeyspaceAccess(AccessLevel.READONLY);
+        clientState.hasKeyspaceAccess(Permission.READ_VALUE);
         String keyspace = clientState.getKeyspace();
 
         ThriftValidation.validateColumnPath(keyspace, column_path);
@@ -329,7 +328,7 @@ public class CassandraServer implements 
         if (logger.isDebugEnabled())
             logger.debug("get_count");
 
-        clientState.hasKeyspaceAccess(AccessLevel.READONLY);
+        clientState.hasKeyspaceAccess(Permission.READ_VALUE);
 
         return get_slice(key, column_parent, predicate, consistency_level).size();
     }
@@ -340,7 +339,7 @@ public class CassandraServer implements 
         if (logger.isDebugEnabled())
             logger.debug("multiget_count");
 
-        clientState.hasKeyspaceAccess(AccessLevel.READONLY);
+        clientState.hasKeyspaceAccess(Permission.READ_VALUE);
         String keyspace = clientState.getKeyspace();
 
         Map<byte[], Integer> counts = new HashMap<byte[], Integer>();
@@ -358,7 +357,7 @@ public class CassandraServer implements 
         if (logger.isDebugEnabled())
             logger.debug("insert");
 
-        clientState.hasKeyspaceAccess(AccessLevel.READWRITE);
+        clientState.hasKeyspaceAccess(Permission.WRITE_VALUE);
 
         ThriftValidation.validateKey(key);
         ThriftValidation.validateColumnParent(clientState.getKeyspace(), column_parent);
@@ -383,25 +382,7 @@ public class CassandraServer implements 
         if (logger.isDebugEnabled())
             logger.debug("batch_mutate");
 
-        AccessLevel needed = AccessLevel.READWRITE;
-
-        TOP:
-        for (Map<String, List<Mutation>> submap : mutation_map.values())
-        {
-            for (List<Mutation> mutations: submap.values())
-            {
-                for (Mutation m : mutations)
-                {
-                    if (m.isSetDeletion())
-                    {
-                        needed = AccessLevel.FULL;
-                        break TOP;
-                    }
-                }
-            }
-        }
-        
-        clientState.hasKeyspaceAccess(needed);
+        clientState.hasKeyspaceAccess(Permission.WRITE_VALUE);
 
         List<RowMutation> rowMutations = new ArrayList<RowMutation>();
         for (Map.Entry<byte[], Map<String, List<Mutation>>> mutationEntry: mutation_map.entrySet())
@@ -431,7 +412,7 @@ public class CassandraServer implements 
         if (logger.isDebugEnabled())
             logger.debug("remove");
 
-        clientState.hasKeyspaceAccess(AccessLevel.FULL);
+        clientState.hasKeyspaceAccess(Permission.WRITE_VALUE);
 
         ThriftValidation.validateKey(key);
         ThriftValidation.validateColumnPathOrParent(clientState.getKeyspace(), column_path);
@@ -504,7 +485,7 @@ public class CassandraServer implements 
             logger.debug("range_slice");
 
         String keyspace = clientState.getKeyspace();
-        clientState.hasKeyspaceAccess(AccessLevel.READONLY);
+        clientState.hasKeyspaceAccess(Permission.READ_VALUE);
 
         ThriftValidation.validateColumnParent(keyspace, column_parent);
         ThriftValidation.validatePredicate(keyspace, column_parent, predicate);
@@ -567,7 +548,7 @@ public class CassandraServer implements 
         if (logger.isDebugEnabled())
             logger.debug("scan");
 
-        clientState.hasKeyspaceAccess(AccessLevel.READONLY);
+        clientState.hasKeyspaceAccess(Permission.READ_VALUE);
         String keyspace = clientState.getKeyspace();
         ThriftValidation.validateColumnParent(keyspace, column_parent);
         ThriftValidation.validatePredicate(keyspace, column_parent, column_predicate);
@@ -708,7 +689,7 @@ public class CassandraServer implements 
 
     public String system_add_column_family(CfDef cf_def) throws InvalidRequestException, TException
     {
-        clientState.hasKeyspaceAccess(AccessLevel.FULL);
+        clientState.hasKeyspaceAccess(Permission.WRITE);
         try
         {
             applyMigrationOnStage(new AddColumnFamily(convertToCFMetaData(cf_def)));
@@ -730,7 +711,7 @@ public class CassandraServer implements 
 
     public String system_drop_column_family(String column_family) throws InvalidRequestException, TException
     {
-        clientState.hasKeyspaceAccess(AccessLevel.FULL);
+        clientState.hasKeyspaceAccess(Permission.WRITE);
         
         try
         {
@@ -753,7 +734,7 @@ public class CassandraServer implements 
 
     public String system_rename_column_family(String old_name, String new_name) throws InvalidRequestException, TException
     {
-        clientState.hasKeyspaceAccess(AccessLevel.FULL);
+        clientState.hasKeyspaceAccess(Permission.WRITE);
         
         try
         {
@@ -861,7 +842,7 @@ public class CassandraServer implements 
 
     public String system_rename_keyspace(String old_name, String new_name) throws InvalidRequestException, TException
     {
-        clientState.hasKeyspaceAccess(AccessLevel.FULL);
+        clientState.hasKeyspaceAccess(Permission.WRITE);
         
         try
         {
@@ -924,7 +905,7 @@ public class CassandraServer implements 
     public void truncate(String cfname) throws InvalidRequestException, UnavailableException, TException
     {
         logger.debug("truncating {} in {}", cfname, clientState.getKeyspace());
-        clientState.hasKeyspaceAccess(AccessLevel.READWRITE);
+        clientState.hasKeyspaceAccess(Permission.WRITE_VALUE);
         try
         {
             schedule();