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