Details
-
Improvement
-
Status: Resolved
-
Low
-
Resolution: Fixed
-
None
-
None
Description
I need to use the authorization feature (i.e. provided by SimpleAuthenticator and SimpleAuthority). The problem is that it's impossible now to pass the credentials (cassandra.output.keyspace.username and cassandra.output.keyspace.passwd) to org.apache.cassandra.hadoop.ConfigHelper because of no setters for these variables. Moreover, even if they could be passed, nothing will change because they are unused - ExternalClient class from org.apache.cassandra.hadoop.BulkRecordWriter is not making use of them; it's not even receiving them and no authorization is provided.
The proposed improvement is to make it possible to authenticate user when loading data to Cassandra with BulkRecordWriter by adding appropriate setters to ConfigHelper and then passing credentials to ExternalClient class so it could use it for authorization request.
I have created a patch for this which I attach.
This improvement was made in the way that does not charm existing ExternalClient interface usage, but I think that it would be a bit nicer way to call the new constructor every time (optionally with username and password set to null) in this code and keeping the old one, instead of having and using two different constructors in two different cases in one method. However, it's my first patch for Cassandra, so I submit a less "agressive" one and I'm waiting for suggestions for to modify it