列出来自非 Keystone Swift 的容器元数据
List container metadata from non-Keystone Swift
此代码向 RadosGW 发出 GET 请求(我不使用 Keystone)
String srcEndpoint = "http://myhost/auth/v1.0";
SwiftApi api = ContextBuilder.newBuilder(PROVIDER).endpoint(srcEndpoint)
.credentials(srcIdentity, srcCredential).buildApi(SwiftApi.class);
如果 PROVIDER
是 openstack-swift 我的代码抛出
org.jclouds.http.HttpResponseException: command: POST http://myhost/auth/v1.0/tokens HTTP/1.1 failed with response: HTTP/1.1 405 Method Not Allowed; content: [{"Code":"MethodNotAllowed"}]
如果 PROVIDER
是 swift 我的代码抛出
Exception in thread "main" 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
我的依赖项是
<dependency>
<groupId>org.apache.jclouds.api</groupId>
<artifactId>swift</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>org.apache.jclouds.api</groupId>
<artifactId>openstack-swift</artifactId>
<version>1.9.2</version>
</dependency>
如何在不下载容器包含的 blob 列表的情况下列出所有容器及其所有元数据?
swift和openstack-swift有什么区别?
主要区别是swift支持v1认证,openstack-swift支持v2认证。不幸的是,swift 也已弃用,不再维护。
您收到该错误的原因是因为 SwiftApi
特定于 openstack-swift API 实现。尽管 jclouds 为抽象出所有实现细节做出了巨大努力,但它并不完美。 swift API 实现 returns SwiftClient
,它扩展了 CommonSwiftClient
(其中定义了所有有趣的方法) .
此外,您可能已经猜到了,SwiftClient
在不同的包中。所以一定要包括package org.jclouds.openstack.swift;
(没有“.v1”)
您可以通过在 SwiftClient
实例上调用 listContainers(ListContainerOptions... options)
来列出所有容器及其元数据。这将 return Set<ContainerMetadata>
.
此代码向 RadosGW 发出 GET 请求(我不使用 Keystone)
String srcEndpoint = "http://myhost/auth/v1.0";
SwiftApi api = ContextBuilder.newBuilder(PROVIDER).endpoint(srcEndpoint)
.credentials(srcIdentity, srcCredential).buildApi(SwiftApi.class);
如果 PROVIDER
是 openstack-swift 我的代码抛出
org.jclouds.http.HttpResponseException: command: POST http://myhost/auth/v1.0/tokens HTTP/1.1 failed with response: HTTP/1.1 405 Method Not Allowed; content: [{"Code":"MethodNotAllowed"}]
如果 PROVIDER
是 swift 我的代码抛出
Exception in thread "main" 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
我的依赖项是
<dependency>
<groupId>org.apache.jclouds.api</groupId>
<artifactId>swift</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>org.apache.jclouds.api</groupId>
<artifactId>openstack-swift</artifactId>
<version>1.9.2</version>
</dependency>
如何在不下载容器包含的 blob 列表的情况下列出所有容器及其所有元数据?
swift和openstack-swift有什么区别?
主要区别是swift支持v1认证,openstack-swift支持v2认证。不幸的是,swift 也已弃用,不再维护。
您收到该错误的原因是因为 SwiftApi
特定于 openstack-swift API 实现。尽管 jclouds 为抽象出所有实现细节做出了巨大努力,但它并不完美。 swift API 实现 returns SwiftClient
,它扩展了 CommonSwiftClient
(其中定义了所有有趣的方法) .
此外,您可能已经猜到了,SwiftClient
在不同的包中。所以一定要包括package org.jclouds.openstack.swift;
(没有“.v1”)
您可以通过在 SwiftClient
实例上调用 listContainers(ListContainerOptions... options)
来列出所有容器及其元数据。这将 return Set<ContainerMetadata>
.