java - 无法使用最新的 OpenStack 验证 Swift ContextBuilder

标签 java openstack-swift jclouds

我已经安装了最新的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/

相关文章:

java - 端口转发 Devstack 尝试连接到本地 IP 而不是 Swift 中端口转发的 IP 地址

java - OpenStack-KeyStone 与 Android 项目的连接

mime-types - 使用 Jclouds 上传时,Rackspace 云文件返回 "application/unknown"作为 mime 类型

java - 在 Jclouds for openstack 中创建 NeutronApi 对象时抛出 com.google.inject.ConfigurationException

jclouds - 新手/芭蕾舞 Actor 在运行构建时出现 gson 问题

java - Maven/Surefire 无法在同一项目中执行 Spock 和 JUnit

java - 从类路径条目获取文件列表

java - Groovy Grails 工具套件需要 Java 运行时环境 1.6.0

java - Scala 抽象类翻译成 Java

java - jclouds 和 Openstack Swift 单元测试的 transient 模式不起作用