Awesome. Here is the PR [3]

[3] https://github.com/apache/jclouds/pull/142

Thanks
Dimuthu

On Mon, May 2, 2022 at 5:05 AM Ignasi Barrera <n...@apache.org> wrote:

> That looks good. Thanks! PR would be very welcome!
>
> On Mon, May 2, 2022 at 9:46 AM DImuthu Upeksha <dimuthu...@apache.org>
> wrote:
>
> > Seems like V3AuthenticationApi does not have an implementation for access
> > key authentication so the invocation routes to the base interface which
> > does not have any HTTP annotation. I implemented the missing feature and
> it
> > works for my openstack setup. Here is the commit history for my fork [2].
> > Please let me know if this is the correct approach and if so, I can send
> a
> > PR
> >
> > [2]
> >
> >
> https://github.com/DImuthuUpe/jclouds/commit/c0bdf264dea02d6bdcea549405d05e3aac42f0b4
> >
> > Thanks
> > Dimuthu
> >
> > On Sat, Apr 30, 2022 at 11:37 AM DImuthu Upeksha <dimuthu...@apache.org>
> > wrote:
> >
> > > Hi,
> > >
> > > I am trying to use Jclouds to access an openstack swift container using
> > > the application credentials. Is that supported in 2.5.0 version? Below
> is
> > > the code sample I used and the error message I got. I can a similar
> > > question in StackOverflow[1] as well
> > >
> > > [1]
> > >
> >
> https://stackoverflow.com/questions/62950726/apache-jclouds-can-we-use-authentication-keystone-v3-with-application-credenti
> > >
> > > Thanks
> > > Dimuthu
> > >
> > > String provider = "openstack-swift";
> > >         String key = "key";
> > >         String secret = "secret";
> > >
> > >         Properties overrides = new Properties();
> > >         overrides.put(KeystoneProperties.KEYSTONE_VERSION, "3");
> > >         overrides.put(KeystoneProperties.CREDENTIAL_TYPE,
> > >                 CredentialTypes.API_ACCESS_KEY_CREDENTIALS);
> > >
> > >         SwiftApi swiftApi = ContextBuilder.newBuilder(provider)
> > >                 .endpoint("https://xxxxx:5000/v3/";)
> > >                 .credentials(key, secret)
> > >                 .overrides(overrides)
> > >                 .buildApi(SwiftApi.class);
> > >
> > >         ContainerApi containerApi =
> swiftApi.getContainerApi("General");
> > >         FluentIterable<Container> containers = containerApi.list();
> > >         for (Container c : containers) {
> > >
> > >             System.out.println(c.getName());
> > >         }
> > >
> > >
> > >
> > > Exception in thread "main" java.lang.IllegalStateException:
> > Optional.get()
> > > cannot be called on an absent value
> > > at com.google.common.base.Absent.get(Absent.java:43)
> > > at
> > >
> >
> org.jclouds.rest.internal.RestAnnotationProcessor.apply(RestAnnotationProcessor.java:227)
> > > at
> > >
> >
> org.jclouds.rest.internal.RestAnnotationProcessor.apply(RestAnnotationProcessor.java:137)
> > > at
> > >
> >
> org.jclouds.rest.internal.InvokeHttpMethod.toCommand(InvokeHttpMethod.java:189)
> > > at
> > >
> >
> org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:85)
> > > at
> > >
> >
> org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:74)
> > > at
> > >
> >
> org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:45)
> > > at
> > >
> >
> org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:156)
> > > at
> > >
> >
> org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:123)
> > > at com.sun.proxy.$Proxy61.authenticateAccessKey(Unknown Source)
> > > at
> > >
> >
> org.jclouds.openstack.keystone.auth.functions.AuthenticateApiAccessKeyCredentials.authenticate(AuthenticateApiAccessKeyCredentials.java:48)
> > > at
> > >
> >
> org.jclouds.openstack.keystone.auth.functions.BaseAuthenticator.apply(BaseAuthenticator.java:99)
> > > at
> > >
> >
> org.jclouds.openstack.keystone.auth.functions.BaseAuthenticator.apply(BaseAuthenticator.java:40)
> > > at
> > >
> >
> com.google.common.cache.CacheLoader$FunctionToCacheLoader.load(CacheLoader.java:165)
> > > at
> > >
> >
> com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3529)
> > > at
> > >
> com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2278)
> > > at
> > >
> >
> com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2155)
> > > at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2045)
> > > at com.google.common.cache.LocalCache.get(LocalCache.java:3953)
> > > at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3976)
> > > at
> > >
> >
> com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4960)
> > > at
> > >
> >
> com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4966)
> > > at
> > >
> >
> org.jclouds.openstack.keystone.auth.config.AuthenticationModule$2.get(AuthenticationModule.java:138)
> > > at
> > >
> >
> org.jclouds.openstack.keystone.auth.config.AuthenticationModule$2.get(AuthenticationModule.java:135)
> > > at
> > >
> >
> org.jclouds.openstack.keystone.v3.catalog.V3ServiceCatalog.get(V3ServiceCatalog.java:50)
> > > at
> > >
> >
> org.jclouds.openstack.keystone.v3.catalog.V3ServiceCatalog.get(V3ServiceCatalog.java:35)
> > > at
> > >
> >
> org.jclouds.openstack.keystone.catalog.suppliers.LocationIdToURIFromServiceEndpointsForTypeAndVersion.get(LocationIdToURIFromServiceEndpointsForTypeAndVersion.java:76)
> > > at
> > >
> >
> org.jclouds.openstack.keystone.catalog.suppliers.LocationIdToURIFromServiceEndpointsForTypeAndVersion.get(LocationIdToURIFromServiceEndpointsForTypeAndVersion.java:46)
> > > at
> > >
> >
> org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier$SetAndThrowAuthorizationExceptionSupplierBackedLoader.load(MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.java:75)
> > > at
> > >
> >
> org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier$SetAndThrowAuthorizationExceptionSupplierBackedLoader.load(MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.java:57)
> > > at
> > >
> >
> com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3529)
> > > at
> > >
> com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2278)
> > > at
> > >
> >
> com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2155)
> > > at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2045)
> > > at com.google.common.cache.LocalCache.get(LocalCache.java:3953)
> > > at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3976)
> > > at
> > >
> >
> com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4960)
> > > at
> > >
> >
> org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.get(MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.java:150)
> > > at
> > >
> >
> org.jclouds.location.functions.RegionToEndpoint.apply(RegionToEndpoint.java:43)
> > > at
> > >
> >
> org.jclouds.location.functions.RegionToEndpoint.apply(RegionToEndpoint.java:32)
> > > at
> > >
> >
> org.jclouds.rest.internal.RestAnnotationProcessor.getEndpointInParametersOrNull(RestAnnotationProcessor.java:528)
> > > at
> > >
> >
> org.jclouds.rest.internal.RestAnnotationProcessor.getEndpointFor(RestAnnotationProcessor.java:551)
> > > at
> > >
> >
> org.jclouds.rest.internal.RestAnnotationProcessor.apply(RestAnnotationProcessor.java:207)
> > > at
> > >
> >
> org.jclouds.rest.internal.RestAnnotationProcessor.apply(RestAnnotationProcessor.java:137)
> > > at
> > >
> >
> org.jclouds.rest.internal.InvokeHttpMethod.toCommand(InvokeHttpMethod.java:189)
> > > at
> > >
> >
> org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:85)
> > > at
> > >
> >
> org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:74)
> > > at
> > >
> >
> org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:45)
> > > at
> > >
> >
> org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117)
> > > at
> > >
> >
> com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:86)
> > > at com.sun.proxy.$Proxy67.list(Unknown Source)
> > > at jclouds.JCloudsDownload.main(JCloudsDownload.java:35)
> > >
> > >
> > >
> > >
> >
>

Reply via email to