详细步骤:可以参考官方文档(http://jclouds./guides/openstack/) 1、创建maven项目,名称groupId是openstack(pom.xml请见备注三)
2、创建测试类(见备注一)
String provider = "openstack-nova"; String identity = "admin:admin"; // tenantName:userName String credential = "ADMIN_PASS"; //密码 .endpoint("http://192.168.142.211:5000/v2.0") //我的地址 3、运行测试类-----》显示结果 如下(备注二) 备注一: package test.openstack; import java.io.Closeable; import java.io.IOException; import java.util.Set; import org.jclouds.ContextBuilder; import org.jclouds.logging.slf4j.config.SLF4JLoggingModule; import org.jclouds.openstack.nova.v2_0.NovaApi; import org.jclouds.openstack.nova.v2_0.domain.Server; import org.jclouds.openstack.nova.v2_0.features.ServerApi; import com.google.common.collect.ImmutableSet; import com.google.common.io.Closeables; import com.google.inject.Module; /** * * @author root * java操作openstack */ public class JCloudsNova implements Closeable { private final NovaApi novaApi; private final Set<String> regions; public static void main(String[] args) throws IOException { JCloudsNova jcloudsNova = new JCloudsNova(); try { jcloudsNova.listServers(); jcloudsNova.close(); } catch (Exception e) { e.printStackTrace(); } finally { jcloudsNova.close(); } } public JCloudsNova() { Iterable<Module> modules = ImmutableSet.<Module>of(new SLF4JLoggingModule()); String provider = "openstack-nova"; String identity = "admin:admin"; // tenantName:userName String credential = "ADMIN_PASS"; //密码 novaApi = ContextBuilder.newBuilder(provider) .endpoint("http://192.168.142.211:5000/v2.0")//我的地址 .credentials(identity, credential) .modules(modules) .buildApi(NovaApi.class); regions = novaApi.getConfiguredRegions(); } //可用可不用 private void listServers() { for (String region : regions) { ServerApi serverApi = novaApi.getServerApi(region); System.out.println("Servers in " + region); for (Server server : serverApi.listInDetail().concat()) { System.out.println(" " + server); } } } public void close() throws IOException { Closeables.close(novaApi, true); } } 备注二: 23:45:47.334 [main] DEBUG o.j.rest.internal.InvokeHttpMethod - >> invoking AuthenticationApi.authenticateWithTenantNameAndCredentials 23:45:47.341 [main] DEBUG o.j.h.i.JavaUrlHttpCommandExecutorService - Sending request 621985371: POST http://192.168.142.211:5000/v2.0/tokens HTTP/1.1 23:45:47.341 [main] DEBUG jclouds.wire - >> "Sensitive data in payload, use PROPERTY_LOGGER_WIRE_LOG_SENSITIVE_INFO override to enable logging this data." 23:45:47.342 [main] DEBUG jclouds.headers - >> POST http://192.168.142.211:5000/v2.0/tokens HTTP/1.1 23:45:47.342 [main] DEBUG jclouds.headers - >> Accept: application/json 23:45:47.342 [main] DEBUG jclouds.headers - >> Content-Type: application/json 23:45:47.343 [main] DEBUG jclouds.headers - >> Content-Length: 98 23:45:47.575 [main] DEBUG o.j.h.i.JavaUrlHttpCommandExecutorService - Receiving response 621985371: HTTP/1.1 200 OK 23:45:47.575 [main] DEBUG jclouds.headers - << HTTP/1.1 200 OK 23:45:47.576 [main] DEBUG jclouds.headers - << Date: Mon, 23 May 2016 23:45:47 GMT 23:45:47.576 [main] DEBUG jclouds.headers - << Vary: X-Auth-Token 23:45:47.576 [main] DEBUG jclouds.headers - << Connection: keep-alive 23:45:47.576 [main] DEBUG jclouds.headers - << Content-Type: application/json 23:45:47.576 [main] DEBUG jclouds.headers - << Content-Length: 2492 23:45:47.585 [main] DEBUG jclouds.wire - << { "access" : { "token" : { "issued_at" : "2016-05-23T22:58:45.883281", "expires" : "2016-05-23T23:58:45Z", "id" : "MIIE7AYJKoZIhvcNAQcCoIIE3TCCBNkCAQExCTAHBgUrDgMCGjCCA0IGCSqGSIb3DQEHAaCCAzMEggMveyJhY2Nlc3MiOiB7InRva2VuIjogeyJpc3N1ZWRfYXQiOiAiMjAxNi0wNS0yM1QyMjo1ODo0NS44ODMyODEiLCAiZXhwaXJlcyI6ICIyMDE2LTA1LTIzVDIzOjU4OjQ1WiIsICJpZCI6ICJwbGFjZWhvbGRlciIsICJ0ZW5hbnQiOiB7ImRlc2NyaXB0aW9uIjogIkFkbWluIFRlbmFudCIsICJlbmFibGVkIjogdHJ1ZSwgImlkIjogIjI3NTFjNTcxYTAyYTQ3MDFiODI2NDc4YjRhNDJlZDkyIiwgIm5hbWUiOiAiYWRtaW4ifX0sICJzZXJ2aWNlQ2F0YWxvZyI6IFt7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly9jb250cm9sbGVyOjM1MzU3L3YyLjAiLCAicmVnaW9uIjogInJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vY29udHJvbGxlcjo1MDAwL3YyLjAiLCAiaWQiOiAiMDZiYWI4Y2Y4YTMzNDZlYThjNjdiOTgzNzQ2N2EwMDAiLCAicHVibGljVVJMIjogImh0dHA6Ly9jb250cm9sbGVyOjUwMDAvdjIuMCJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJpZGVudGl0eSIsICJuYW1lIjogImtleXN0b25lIn1dLCAidXNlciI6IHsidXNlcm5hbWUiOiAiYWRtaW4iLCAicm9sZXNfbGlua3MiOiBbXSwgImlkIjogImYyYWNhZTRmN2Q4YjRlMTM4ZjBkMGVkMDE0YzFiMDhmIiwgInJvbGVzIjogW3sibmFtZSI6ICJfbWVtYmVyXyJ9LCB7Im5hbWUiOiAiYWRtaW4ifV0sICJuYW1lIjogImFkbWluIn0sICJtZXRhZGF0YSI6IHsiaXNfYWRtaW4iOiAwLCAicm9sZXMiOiBbIjlmZTJmZjllZTQzODRiMTg5NGE5MDg3OGQzZTkyYmFiIiwgImM2OWUzOGQ1YTA4MTQwNGY4NGRmMjk0MTViMmFlNzdlIl19fX0xggGBMIIBfQIBATBcMFcxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVVbnNldDEOMAwGA1UEBwwFVW5zZXQxDjAMBgNVBAoMBVVuc2V0MRgwFgYDVQQDDA93d3cuZXhhbXBsZS5jb20CAQEwBwYFKw4DAhowDQYJKoZIhvcNAQEBBQAEggEAU0WIJjcwZyjj53DMBR6GZjdXd1Y0-5RvsQwm2-Ee7Fd6sZOPgrfRFOihgFIwh5LuV++xzKp7iel70-PUsTqgumyut5xOryMDx4kUIselev3XsNz9BHAUFsddE39HjedSe+2d4qMN5w3jaV-KQuEbKU3NZWIXjMjIjR2dBGZH2h8H5oZo-2vf+1iE+g7+0SBa7D0slMzDj3qFTcNyyVeplv0WTVmtHcbaTM6Z2jQyUbYc-DQhHWCmmsojoq2zqpnOP-V2qb55c-yzDweZ0ue8BNnCUni4MiXQK4r78nRMcHR+2-QZrYQdoqOGgutDInaWPsuymGOlgTBFqx9ggNOF4A==", "tenant" : { "description" : "Admin Tenant", "enabled" : true, "id" : "2751c571a02a4701b826478b4a42ed92", "name" : "admin" } }, "serviceCatalog" : [ { "endpoints" : [ { "adminURL" : "http://controller:35357/v2.0", "region" : "regionOne", "internalURL" : "http://controller:5000/v2.0", "id" : "06bab8cf8a3346ea8c67b9837467a000", "publicURL" : "http://controller:5000/v2.0" } ], "endpoints_links" : [ ], "type" : "identity", "name" : "keystone" } ], "user" : { "username" : "admin", "roles_links" : [ ], "id" : "f2acae4f7d8b4e138f0d0ed014c1b08f", "roles" : [ { "name" : "_member_" }, { "name" : "admin" } ], "name" : "admin" }, "metadata" : { "is_admin" : 0, "roles" : [ "9fe2ff9ee4384b1894a90878d3e92bab", "c69e38d5a081404f84df29415b2ae77e" ] } } } 备注三: <project xmlns="http://maven./POM/4.0.0" xmlns:xsi="http://www./2001/XMLSchema-instance" xsi:schemaLocation="http://maven./POM/4.0.0 http://maven./xsd/maven-4.0.0.xsd">
|
|