分享

使用jclouds访问openstack的nova

 崋果山 2017-12-08

详细步骤:可以参考官方文档(http://jclouds./guides/openstack/)

1、创建maven项目,名称groupId是openstack(pom.xml请见备注三)


2、创建测试类(见备注一)


注意:用户和密码以及自己的url
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">
  <modelVersion>4.0.0</modelVersion>
  
  <groupId>com.test</groupId>
  <artifactId>openstack</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <properties>
    <jclouds.version>1.9.2</jclouds.version>
  </properties>
      <!-- jclouds dependencies -->
   <dependencies>
    <dependency>
      <groupId>org.apache.jclouds.driver</groupId>
      <artifactId>jclouds-slf4j</artifactId>
      <version>${jclouds.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.jclouds.driver</groupId>
      <artifactId>jclouds-sshj</artifactId>
      <version>${jclouds.version}</version>
    </dependency>
    <!-- jclouds OpenStack dependencies -->
    <dependency>
      <groupId>org.apache.jclouds.api</groupId>
      <artifactId>openstack-keystone</artifactId>
      <version>${jclouds.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.jclouds.api</groupId>
      <artifactId>openstack-nova</artifactId>
      <version>${jclouds.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.jclouds.api</groupId>
      <artifactId>openstack-swift</artifactId>
      <version>${jclouds.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.jclouds.api</groupId>
      <artifactId>openstack-cinder</artifactId>
      <version>${jclouds.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.jclouds.api</groupId>
      <artifactId>openstack-trove</artifactId>
      <version>${jclouds.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.jclouds.labs</groupId>
      <artifactId>openstack-glance</artifactId>
      <version>${jclouds.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.jclouds.labs</groupId>
      <artifactId>openstack-marconi</artifactId>
      <version>${jclouds.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.jclouds.labs</groupId>
      <artifactId>openstack-neutron</artifactId>
      <version>${jclouds.version}</version>
    </dependency>
    <!-- 3rd party dependencies -->
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.0.13</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.25</version>
    </dependency>
  </dependencies>
</project>


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约