Java jclouds API가 OpenStack 공급자에 연결하지 못했습니다.OpenStack에서 jclouds => java.util.NoSuchElementException : apiType이 카탈로그 []에서 컴퓨팅을 찾을 수 없음
다음 메시지와 함께 예외가 발생합니다. java.util.NoSuchElementException : apiType이 카탈로그 []에 없습니다.
다른 API (python-novaclient, ruby-fog)는 문제가 없으므로 언어 (API)에만 해당됩니다.
import static com.google.common.io.Closeables.closeQuietly;
import java.io.Closeable;
import java.util.Set;
import org.jclouds.ContextBuilder;
import org.jclouds.compute.ComputeService;
import org.jclouds.compute.ComputeServiceContext;
import org.jclouds.compute.domain.ComputeMetadata;
import org.jclouds.logging.slf4j.config.SLF4JLoggingModule;
import org.jclouds.openstack.nova.v2_0.NovaApi;
import org.jclouds.openstack.nova.v2_0.NovaAsyncApi;
import org.jclouds.openstack.nova.v2_0.domain.Server;
import org.jclouds.openstack.nova.v2_0.features.ServerApi;
import org.jclouds.rest.RestContext;
import com.google.common.collect.ImmutableSet;
import com.google.inject.Module;
public class jcloudsOpenStack implements Closeable {
private ComputeService compute;
private RestContext nova;
public static void main(String[] args) {
jcloudsOpenStack jcloudOpenStack = new jcloudsOpenStack();
try {
jcloudOpenStack.init();
jcloudOpenStack.listServers();
jcloudOpenStack.close();
}
catch (Exception e) {
e.printStackTrace();
}
finally {
jcloudOpenStack.close();
}
}
private void init() {
Iterable modules = ImmutableSet. of(new SLF4JLoggingModule());
String provider = "openstack-nova";
String identity = "..."; // login name
String password = "..."; // password
ComputeServiceContext context = ContextBuilder.newBuilder(provider)
.endpoint("https://UltiCloud.com:5000/v2.0/")
.credentials(identity, password)
.modules(modules)
.buildView(ComputeServiceContext.class);
compute = context.getComputeService();
nova = context.unwrap();
}
private void listServers() {
Set<? extends ComputeMetadata> nodes = compute.listNodes();
System.out.println(nodes.size());
}
public void close() {
closeQuietly(compute.getContext());
}
}
어떤 도움이나 힌트는 크게 본을 실행하는 데 적절한 종속성을 놓치고
나는 모든이를 도울 수. 만약 내가하지 않았다면, 내가 할 수 있었던 코드를 컴파일 할 수 없었을 것입니다. 내가 언급 한 모든 것을 가지고 있는지 확인해 보겠습니다. 고마워요. –
DevStack Havana 배치에 맞춰 정확하게 예제를 실행 했으므로 제대로 작동했습니다. 그것이 당신을 위해 일하고 있기를 바랍니다. –
고마워, 지금까지는 그렇지 않지만 우리는 그것에 대해 연구 중이다. 그것이 당신을 위해 일하는 것을 아는 것이 좋습니다. –