我已经安装了最新的OpenStack,并且正在使用Java和jclouds SDK与OpenStack Swift交互,在我使用的OpenStack环境中,身份API版本是/identity/v3/
Swift API 版本是 v1/
,我的代码是:
blobContext = ContextBuilder.newBuilder(PROVIDER)
.credentials(username, apiKey)
.endpoint(EndPoint)
.overrides(multipartProperties)
//.buildApi(RegionScopedBlobStoreContext.class);
.buildView(RegionScopedBlobStoreContext.class);
String blobRegion = blobContext.getConfiguredRegions().iterator().next();
所以在该行 String blobRegion = blobContext.getConfiguredRegions().iterator().next();
我得到了异常:
request: POST http://devstack.####.com:#####/v1/tokens HTTP/1.1 [Sensitive data in payload, use jclouds.wire.log.sensitive override to enable logging this data.] failed with response: HTTP/1.1 401 Unauthorized
这段代码过去可以工作,但过去我没有使用最新的 OpenStack,重要的是我的身份服务是项目范围而不是域-范围(请参阅this link)
Swift API 是:http://devstack.####.com:######/v1/
我正在使用最新的 jclouds API
我相信这个问题会出现在所有ContextBuilder中,那么我是否可以解决这个问题?
谢谢
最佳答案
要在新的 OpenStack 环境(运行 Keystone v3)中使用 jclouds,您必须使用 jclouds >= 2.1.0 并使用适当的 Keystone 属性配置 ContextBuilder,如下所示: https://jclouds.apache.org/blog/2018/01/16/keystone-v3/
关于java - 无法使用最新的 OpenStack 验证 Swift ContextBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50046237/