Hi Andrea,

     With "swift" as the provider, I am getting the below error. (I am on
1.8.0).
com.google.inject.ConfigurationException: Guice configuration errors:

1) No implementation for org.jclouds.openstack.swift.v1.SwiftApi was bound.
  while locating org.jclouds.openstack.swift.v1.SwiftApi

1 error
    at
com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1004)
    at
com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1009)
    at org.jclouds.ContextBuilder.buildApi(ContextBuilder.java:655)
    at org.jclouds.ContextBuilder.buildApi(ContextBuilder.java:647)

Rgds
Jai

On Fri, Oct 17, 2014 at 2:04 PM, Andrea Turli <andrea.tu...@gmail.com>
wrote:

> Try with the following
>
> String provider = "swift";
>     SwiftApi swiftApi = ContextBuilder.newBuilder(provider)
>               .endpoint("
> https://dal05.objectstorage.softlayer.net/auth/v1.0";)
>               .credentials("TENANT_NAME:USER_NAME", "API_KEY")
>               .modules(modules)
>               .buildApi(SwiftApi.class);
>     ContainerApi containerApi = swiftApi.getContainerApiForRegion("dal05");
>         Set<Container> containers = containerApi.list().toSet();
>
> On Fri, Oct 17, 2014 at 8:28 PM, Jai M <jaiganes...@gmail.com> wrote:
> > Hi Andrea,
> >
> >   I am using the following code snippet
> > String provider = "openstack-swift";
> >     SwiftApi swiftApi = ContextBuilder.newBuilder(provider)
> >
> > .endpoint("https://dal05.objectstorage.softlayer.net/auth/v1.0";)
> >               .credentials("TENANT_NAME:USER_NAME", "API_KEY")
> >               .modules(modules)
> >               .buildApi(SwiftApi.class);
> >     ContainerApi containerApi =
> swiftApi.getContainerApiForRegion("dal05");
> >         Set<Container> containers = containerApi.list().toSet();
> >
> > When I try this, I get the below exception
> >
> >
> > 2014-10-17 09:59:19,302 [main] DEBUG SLF4JLogger Receiving response
> > -2004695267: HTTP/1.1 400 Bad Request
> > 2014-10-17 09:59:19,308 DEBUG [jclouds.wire] [main] << "<html><h1>Bad
> > Request</h1><p>The server could not comply with the request since it is
> > either malformed or otherwise incorrect.</p></html>"
> > 2014-10-17 09:59:19,308 [main] DEBUG SLF4JLogger << "<html><h1>Bad
> > Request</h1><p>The server could not comply with the request since it is
> > either malformed or otherwise incorrect.</p></html>"
> > org.jclouds.http.HttpResponseException: command: POST
> > https://dal05.objectstorage.softlayer.net/auth/v1.0/tokens HTTP/1.1
> failed
> > with response: HTTP/1.1 400 Bad Request; content: [<html><h1>Bad
> > Request</h1><p>The server could not comply with the request since it is
> > either malformed or otherwise incorrect.</p></html>]
> >     at
> >
> org.jclouds.openstack.swift.v1.handlers.SwiftErrorHandler.handleError(SwiftErrorHandler.java:46)
> >     at
> >
> org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:65)
> >     at
> >
> org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:135)
> >     at
> >
> org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:105)
> >     at
> >
> org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:90)
> >     at
> >
> org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:73)
> >     at
> >
> org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:44)
> >     at
> >
> org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:156)
> >     at
> >
> org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:123)
> >     at
> > com.sun.proxy.$Proxy100.authenticateWithTenantNameAndCredentials(Unknown
> > Source)
> >     at
> >
> org.jclouds.openstack.keystone.v2_0.functions.AuthenticatePasswordCredentials.authenticateWithTenantName(AuthenticatePasswordCredentials.java:43)
> >     at
> >
> org.jclouds.openstack.keystone.v2_0.functions.AuthenticatePasswordCredentials.authenticateWithTenantName(AuthenticatePasswordCredentials.java:31)
> >     at
> >
> org.jclouds.openstack.keystone.v2_0.functions.internal.BaseAuthenticator.apply(BaseAuthenticator.java:79)
> >     at
> >
> org.jclouds.openstack.keystone.v2_0.functions.internal.BaseAuthenticator.apply(BaseAuthenticator.java:36)
> >
> >
> > In the wire logs, I see it is a POST request with the following payload
> > "{"auth":{"
> >
> passwordCredentials":{"username":"USERID","password":"API_KEY"},"tenantName":"ACC-278436-15"}}"
> >
> > However the actual api call should be a get with AUTH headers.
> >
> > Thanks
> > Jai
> >
> > On Fri, Oct 17, 2014 at 11:49 AM, Andrea Turli <andrea.tu...@gmail.com>
> > wrote:
> >>
> >> Hi Jai,
> >>
> >> please try with
> >>
> >> identity=tenantname:user
> >> credential=api_key
> >>
> >> Notice, you'll probably need to point at something like
> >>
> >> https://<locationId>.objectstorage.softlayer.net/auth/v1.0
> >>
> >> where locationId is something like `ams01` or `dal01`
> >>
> >> Best,
> >> Andrea
> >>
> >> On Fri, Oct 17, 2014 at 4:30 PM, Jai M <jaiganes...@gmail.com> wrote:
> >> > I am using the openstack-swift api to interact with SoftLayer Object
> >> > storage. However the authentication is failing.
> >> >
> >> > I see the payload for the POST request to get the token is in the
> below
> >> > format
> >> >
> >> >
> >> >
> "{"auth":{"passwordCredentials":{"username":"USERID","password":"API_KEY"},"tenantName":"ACC-278436-15"}}"
> >> >
> >> > This does not work for SL. The SL spec requires it to be a GET with
> >> > headers
> >> >
> >> > "X-Auth-User: ACC-278436-15:USERID"
> >> > "X-Auth-Key: API_KEY"
> >> >
> >> > Is there a way I can switch/plugin a different authentication
> mechanism
> >> > for
> >> > SoftLayer or should I use the blobstore api directly instead of swift
> >> > api ?
> >> >
> >> > Let me know.
> >> >
> >> > Rgds
> >> > Jai
> >> >
> >> >
> >
> >
>

Reply via email to