Hi Ignasi,

I just read your mail after having done the Bug in JIRA (#1220) and the PR
on github (#1046). I managed to "have something working" by adding a
requestStaticInjection but I understand it is not the "standard method" for
Jclouds.
If I move to the binder class, do the injection will be "automatic" or
something has to be declared ?

Thanks in advance,

Regards,

Etienne Carrière

2017-01-03 16:11 GMT+01:00 Ignasi Barrera <n...@apache.org>:

> Hi Etienne,
>
> Apologies for the late reply. I've had a look at your patch and I like
> proposed the solution.
>
> I think the problem in your code is that you are configuring the
> injection in the Guice module itself. Guice modules are used to
> configure "what and how" is injected, but they should not contain
> injected variables or constructors, since one manually instantiates
> them (when passing it to the context builder) instead of requesting an
> instance to the Guice injector.
>
> Making it work would be simple: just move all the header constants and
> variables to your Binder class and let injection happen there. It also
> makes more sense, since that's the place where the headers are needed.
>
> Let us know if that works, and look forward to seeing a PR for this! :)
>
>
> HTH!
>
> I.
>
> On 30 December 2016 at 17:59, Etienne Carriere
> <etienne.carri...@gmail.com> wrote:
> > Hi Andrea,
> >
> > Thank you for your answer.
> > Concerning the 2 points :
> > * my current patch is available here :
> > https://github.com/Etienne-Carriere/jclouds/commit/
> fd9057573935b6f95e8cab6526790e0b79a5e843#diff-
> 4f8d0e6c4a8bc4add7203bcbfe4bbf6eR71
> > * I take the example on the BaseAuthenticator class (
> > https://github.com/jclouds/jclouds/blob/4bbca9edf943852ce1ea5aa579fa05
> 54f770a3ea/apis/openstack-keystone/src/main/java/org/
> jclouds/openstack/keystone/v2_0/functions/internal/
> BaseAuthenticator.java#L45)
> > for the injection of the property given through overrides method of the
> > builder.
> >
> > Unfortunately it doesn't work . The value of the variable is null even
> if I
> > push the property.
> >
> > Regards,
> >
> > Etienne Carrière
> >
> >
> >
> >
> > 2016-12-30 16:58 GMT+01:00 Andrea Turli <andrea.tu...@gmail.com>:
> >
> >> Hi Etienne,
> >>
> >> sorry for the late answer.
> >>
> >> Unfortunately I'm not really familiar with this details of swift but I
> >> think what you are proposing makes sense to me.
> >>
> >> I'd suggest to fist send a working example, maybe updating
> >> https://github.com/jclouds/jclouds-examples/tree/master/
> blobstore-basics
> >> but not sure, and potentially re-start there the conversation around the
> >> question #1
> >>
> >> Re #2, can you elaborate a bit more when you say "we have issues to use
> the
> >> variables injected by the overrides method" what are you trying to
> achieve?
> >>
> >> HTH,
> >> Andrea
> >>
> >> On Wed, Dec 28, 2016 at 4:36 PM, Etienne Carriere <
> >> etienne.carri...@gmail.com> wrote:
> >>
> >> > 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