Вы можете перебирать области Rackspace, чтобы получить конечные точки облачных файлов, а затем вы можете запросить каждую конечную точку, чтобы увидеть, существует ли там контейнер. Что-то вроде следующего:
package org.jclouds.examples.rackspace.cloudfiles;
import static org.jclouds.examples.rackspace.cloudfiles.Constants.PROVIDER;
import java.io.IOException; import java.util.Set;
import org.jclouds.ContextBuilder;
import org.jclouds.openstack.swift.v1.blobstore.RegionScopedBlobStoreContext;
import org.jclouds.blobstore.BlobStore;
public class GetRegion{
private final RegionScopedBlobStoreContext ctx;
private final String YOUR_CONTAINER = "YOUR_CONTAINER_HERE";
public static void main(String[] args) throws IOException {
GetRegion getRegion = new GetRegion(args[0], args[1]);
try {
getRegion.getRegion();
}
catch (Exception e) {
e.printStackTrace();
}
}
public GetRegion(String username, String apiKey) {
ctx = ContextBuilder.newBuilder(PROVIDER)
.credentials(username, apiKey)
.buildView(RegionScopedBlobStoreContext.class);
}
private void getRegion() {
Set<String> regions = ctx.configuredRegions();
for(String region:regions){
BlobStore store = ctx.blobStoreInRegion(region);
if(store.containerExists(YOUR_CONTAINER)) {
System.out.format("Container is in %s region\n", region);
}
}
}
}
Для запуска, замените «YOUR_CONTAINER_HERE» с именем контейнера и передать имя пользователя Rackspace и ключ API в качестве аргументов командной строки (в качестве альтернативы, жесткий код их для «арг [ 0] 'и' args [1] ', соответственно).
Этот подход требует один вызов BlobStore.containerExists в регионе. –