On Wed, 2 Dec 2009 15:13:11 +0000 Mark Robson <mar...@gmail.com> wrote: 

MR> I'd be against moving to a stateful protocol.

Noted, I'd like to see some more votes.  I'm agnostic: I think it will
work fine either way.  Eric and Jonathan are definitely on the stateful
side so it's 2-1 right now.  I think Robin is also on the stateful side
from his earlier notes so it may be 3-1.

On Wed, 02 Dec 2009 11:59:56 -0600 Eric Evans <eev...@rackspace.com> wrote: 

EE> I'm thinking...

EE> void login(1:required string keyspace, 2:optional map<string, string>
EE> authentication) throws AuthenticationException, AuthorizationException

EE> You're always going to want the keyspace supplied, but depending on how
EE> the cluster is configured, you may not need anything else (so make the
EE> map the second argument, and make it optional).

I was going to use an empty map to signify no credentials.  Optional
works just as well.  Thus the Thrift definition is:

# invalid authentication request (user does not exist or credentials invalid)
exception AuthenticationException {
    1: required string why
}

# invalid authorization request (user does not have access to keyspace)
exception AuthorizationException {
    1: required string why
}

struct AuthenticationRequest {
    1: required map<string, string> credentials,
}

service Cassandra {
...
  void login(1: required string keyspace, 
             2: optional AuthenticationRequest auth_request) 
       throws (1:AuthenticationException aux, 2: AuthorizationException azx),
...
}

Ted

Reply via email to