简体   繁体   中英

First steps in jclouds

I'm having some problems when I try to connect with my openstack. I'm using jclouds and this is my code:

    context = ContextBuilder.newBuilder("openstack-nova")
            .endpoint("http://xxx.xxx.xxx.xxx:5000/v2.0/")
            .credentials("tenantname:username", "password")
            .modules(ImmutableSet.<Module> of(new SLF4JLoggingModule(), new   SshjSshClientModule()))
            .buildView(ComputeServiceContext.class);

    service = context.getComputeService();

    for(ComputeMetadata node: service.listNodes()) {
        System.out.println("NODE: " + node.getId());
    }

But always it return the following error:

 DEBUG [org.jclouds.rest.internal.InvokeHttpMethod] [main] >> invoking    AuthenticationApi.authenticateWithTenantNameAndCredentials
 DEBUG [org.jclouds.http.internal.JavaUrlHttpCommandExecutorService] [main] Sending request -1502473400: POST http://xxx.xxx.xxx.xxx:5000/v2.0/tokens HTTP/1.1
 ERROR [org.jclouds.http.internal.JavaUrlHttpCommandExecutorService] [main] Command not considered safe to retry because request method is POST: [method=org.jclouds.openstack.keystone.v2_0.AuthenticationApi.public abstract org.jclouds.openstack.keystone.v2_0.domain.Access org.jclouds.openstack.keystone.v2_0.AuthenticationApi.authenticateWithTenantNameAndCredentials(java.lang.String,org.jclouds.openstack.keystone.v2_0.domain.PasswordCredentials)[tenantname, PasswordCredentials{username=username, password=*****}], request=POST http://xxx.xxx.xxx.xxx:5000/v2.0/tokens HTTP/1.1]

I'm developing in eclipse and Intellij IDEA. I've been reviewing the proxy configuration, but everything is normal.

Please, can anyone help me?

Thanks!

The code looks good, but if you need to go through a proxy you may need to configure the proxy properties in jclouds. Something like the following, with the right values for your proxy:

Properties overrides = new Properties();
overrides.setProperty(Constants.PROPERTY_PROXY_HOST, "localhost");
overrides.setProperty(Constants.PROPERTY_PROXY_PORT, "8888");

You can pass the properties to the overrides method of the ContextBuilder.

You can also enable the jclouds.wire logs to see every request and response that are being sent. This will show the exact network error or the one returned by your OpenStack installation. Have a look at: http://jclouds.apache.org/reference/logging/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM