You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by al...@apache.org on 2015/03/06 06:56:33 UTC
cassandra git commit: Make custom role options accessible from
IRoleManager
Repository: cassandra
Updated Branches:
refs/heads/trunk c610b3123 -> a1b574e52
Make custom role options accessible from IRoleManager
patch by Sam Tunnicliffe; reviewed by Aleksey Yeschenko for
CASSANDRA-8761
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a1b574e5
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a1b574e5
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a1b574e5
Branch: refs/heads/trunk
Commit: a1b574e52e363e1f9cf46496d4acc5bcd3436d96
Parents: c610b31
Author: Sam Tunnicliffe <sa...@beobal.com>
Authored: Thu Mar 5 21:52:51 2015 -0800
Committer: Aleksey Yeschenko <al...@apache.org>
Committed: Thu Mar 5 21:52:51 2015 -0800
----------------------------------------------------------------------
CHANGES.txt | 4 ++--
.../org/apache/cassandra/auth/CassandraRoleManager.java | 5 +++++
src/java/org/apache/cassandra/auth/IRoleManager.java | 11 +++++++++++
.../cassandra/cql3/statements/ListRolesStatement.java | 10 +++++++---
4 files changed, 25 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a1b574e5/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index e7bc034..e1efa3b 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,6 +1,6 @@
3.0
- * use preloaded jemalloc w/ Unsafe (CASSANDRA-8714)
- * Add role based access control (CASSANDRA-7653, 8650, 7216, 8760, 8849)
+ * Use preloaded jemalloc w/ Unsafe (CASSANDRA-8714)
+ * Add role based access control (CASSANDRA-7653, 8650, 7216, 8760, 8849, 8761)
* Avoid accessing partitioner through StorageProxy (CASSANDRA-8244, 8268)
* Upgrade Metrics library and remove depricated metrics (CASSANDRA-5657)
* Serializing Row cache alternative, fully off heap (CASSANDRA-7438)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a1b574e5/src/java/org/apache/cassandra/auth/CassandraRoleManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/auth/CassandraRoleManager.java b/src/java/org/apache/cassandra/auth/CassandraRoleManager.java
index 6139e5d..36c57d4 100644
--- a/src/java/org/apache/cassandra/auth/CassandraRoleManager.java
+++ b/src/java/org/apache/cassandra/auth/CassandraRoleManager.java
@@ -292,6 +292,11 @@ public class CassandraRoleManager implements IRoleManager
return getRole(role.getRoleName()).canLogin;
}
+ public Map<String, String> getCustomOptions(RoleResource role)
+ {
+ return Collections.emptyMap();
+ }
+
public boolean isExistingRole(RoleResource role)
{
return getRole(role.getRoleName()) != NULL_ROLE;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a1b574e5/src/java/org/apache/cassandra/auth/IRoleManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/auth/IRoleManager.java b/src/java/org/apache/cassandra/auth/IRoleManager.java
index 3295a3d..5205dad 100644
--- a/src/java/org/apache/cassandra/auth/IRoleManager.java
+++ b/src/java/org/apache/cassandra/auth/IRoleManager.java
@@ -169,6 +169,17 @@ public interface IRoleManager
boolean canLogin(RoleResource role);
/**
+ * Where an implementation supports OPTIONS in CREATE and ALTER operations
+ * this method should return the Map<String, String> representing the custom
+ * options associated with the role, as supplied to CREATE or ALTER.
+ * It should never return null; if the implementation does not support
+ * OPTIONS or if none were supplied then it should return an empty map.
+ * @param role Role whose custom options are required
+ * @return Key/Value pairs representing the custom options for the Role
+ */
+ Map<String, String> getCustomOptions(RoleResource role);
+
+ /**
* Return true is a Role with the given name exists in the system.
*
* @param role Role whose existence to verify
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a1b574e5/src/java/org/apache/cassandra/cql3/statements/ListRolesStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/ListRolesStatement.java b/src/java/org/apache/cassandra/cql3/statements/ListRolesStatement.java
index 24071b0..477aedc 100644
--- a/src/java/org/apache/cassandra/cql3/statements/ListRolesStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/ListRolesStatement.java
@@ -28,6 +28,7 @@ import org.apache.cassandra.auth.*;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.cql3.*;
import org.apache.cassandra.db.marshal.BooleanType;
+import org.apache.cassandra.db.marshal.MapType;
import org.apache.cassandra.db.marshal.UTF8Type;
import org.apache.cassandra.exceptions.*;
import org.apache.cassandra.service.ClientState;
@@ -39,10 +40,12 @@ public class ListRolesStatement extends AuthorizationStatement
private static final String KS = AuthKeyspace.NAME;
private static final String CF = AuthKeyspace.ROLES;
+ private static final MapType optionsType = MapType.getInstance(UTF8Type.instance, UTF8Type.instance, false);
private static final List<ColumnSpecification> metadata =
- ImmutableList.of(new ColumnSpecification(KS, CF, new ColumnIdentifier("role", true), UTF8Type.instance),
- new ColumnSpecification(KS, CF, new ColumnIdentifier("super", true), BooleanType.instance),
- new ColumnSpecification(KS, CF, new ColumnIdentifier("login", true), BooleanType.instance));
+ ImmutableList.of(new ColumnSpecification(KS, CF, new ColumnIdentifier("role", true), UTF8Type.instance),
+ new ColumnSpecification(KS, CF, new ColumnIdentifier("super", true), BooleanType.instance),
+ new ColumnSpecification(KS, CF, new ColumnIdentifier("login", true), BooleanType.instance),
+ new ColumnSpecification(KS, CF, new ColumnIdentifier("options", true), optionsType));
private final RoleResource grantee;
private final boolean recursive;
@@ -116,6 +119,7 @@ public class ListRolesStatement extends AuthorizationStatement
result.addColumnValue(UTF8Type.instance.decompose(role.getRoleName()));
result.addColumnValue(BooleanType.instance.decompose(roleManager.isSuper(role)));
result.addColumnValue(BooleanType.instance.decompose(roleManager.canLogin(role)));
+ result.addColumnValue(optionsType.decompose(roleManager.getCustomOptions(role)));
}
return new ResultMessage.Rows(result);
}