Hi,

In our project, we currently need to interact with differents types of
swift implementations :
- Ceph with radosgw
- NetApp appliance with swift endpoint

Thoses implementions use "identity v1 protocol" which is an old but simple
API for the authentication and don't use identity v2 protocol (
http://developer.openstack.org/api-ref/identity/v2/index.html) which is
implemented by jclouds in openstack-keystone module .


*State of jclouds*
The openstack swift "official" client (in python) manage this v1 protocol (
http://docs.openstack.org/developer/python-swiftclient/swiftclient.html) so
even if we don't have a specification, we will use the code of the official
client for the implementation.

In jclouds, there is currently a sort-of v1 identity protocol in the
openstack-swift module:  in
apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/config/SwiftAuthenticationModule.java,
there is a tempAuthCredentials which is almost the identity v1 protocol
except that the name of the headers was not the same :
  = X-Storage-User vs X-Auth-User
  = X-Storage-Path vs X-Auth-Key

*Proposal*
In our project, we think about the following solution
  = Keep the current behaviour as default
  = Add 2 parameters to change the header name through variables in the
Properties put in the Builder like that :

     Properties overrides = new Properties();
      overrides.setProperty("jclouds.keystone.credential-type",
"tempAuthCredentials");
      overrides.setProperty("jclouds.swift.tempAuth.headerUser",
"X-Auth-User");
      overrides.setProperty("jclouds.swift.tempAuth.headerPass",
"X-Auth-Pass");
      swiftApi = ContextBuilder.newBuilder(provider)
            .endpoint(args[1])
            .credentials(identity, credential)
            .modules(modules)
            .overrides(overrides)
            .buildApi(SwiftApi.class);

*Questions*
1) Will this behaviour acceptable upstream ? (and what is the lifecycle
planned for this tempAuthCredentials)
2) As working on the patch, we have issues to use the variables injected by
the overrides method. After analysing some parts of the code of
openstack-keystone module, i tried to use @Named and @Inject but without
success. Is there some doc or some hints on how to do that ?

Thanks in advance,

Regards,

Etienne Carrière

Reply via email to