Java版OpenStack-API開發(fā)實(shí)例二則
本文介紹了兩種Java版本的OpenStack-API,分別是JCoulds 和 OpenStack4j,供大家學(xué)習(xí)參考。
JClouds
1.介紹
jclouds -該API提供云計(jì)算環(huán)境的可移植抽象層以及云規(guī)范特性,支持包括 Amazon, VMWare, Azure, and OpenStack 等云計(jì)算平臺,其中針對OpenStack,目前支持Nova、cinder、glance、Neutron、Keystone、swift等API接口,但是不支持Ceilometer的API接口。
2.使用與Jar包
官方文檔——強(qiáng)烈推薦
http://jclouds.apache.org/guides/openstack/
jcloudsjar包使用maven安裝下載管理即可;
3.舉例
- import com.google.common.collect.ImmutableSet;
- import com.google.common.io.Closeables;
- import com.google.inject.Module;
- 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 java.io.Closeable;
- import java.io.IOException;
- import java.util.Set;
- public class JCloudsNova implements Closeable {
- private final NovaApi novaApi;
- private final Set 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 modules = ImmutableSet.of(new SLF4JLoggingModule());
- String provider = "openstack-nova";
- String identity = "demo:demo"; // 項(xiàng)目管理員和用戶
- String credential = "devstack";// 用戶密碼
- novaApi = ContextBuilder.newBuilder(provider)
- .endpoint("http://xxx.xxx.xxx.xxx:5000/v2.0/")//API地址
- .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);
- }
- }12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
4.測試效果:
比較穩(wěn)定,而且API文檔很全,教好理解;
#p#
OpenStack4j
1.介紹
針對OpenStack的Web-API,包含Keystone、Nova、Neutron、Glance、Cinder
、Swift、Ceilometer、Heat的API支持,更新速度快,有問題需求及時(shí)聯(lián)系Github可以得到解決。
2.使用與Jar包
官方文檔——http://www.openstack4j.com/learn/
http://www.openstack4j.com/javadoc/
OpenStack4j -jar包使用提供的 openstack4j-2.0.1-withdeps-sources.jar即可,注意使用的jdk***為1.7以上,jdk1.7***。java ee 5 或Java ee 6 均可。(使用Myeclipse時(shí),jdk版本為1.6,容易報(bào) version 51 錯誤。)
3.舉例:
- List openStackNetworkList=new ArrayList();
- openStackNetworkList.add("df6effa2-a1b5-400a-8ab1-457673591aa1");
- String openstackImageId = ""
- String openstackFlavorId= "";
- String openstackServerName = "";
- String openstackZone = "nova:compute2";
- ServerCreate sc = Builders.server().name(openstackServerName)
- .flavor(openstackFlavorId)
- .image(openstackImageId)
- .networks(openStackNetworkList)
- .availabilityZone(openstackZone)
- .build();
- // Boot the Server
- OSClient os = OSFactory.builder()
- .endpoint("http://x.x.x.x:5000/v2.0/")
- .credentials("xxx","xxx")
- .tenantName("xxx")
- .authenticate();
- Server server = os.compute().servers().boot(sc);1234567891011121314151617181920212223
4.使用效果
API簡單易用;而且支持Ceilometer和Heat,推薦使用。
博文出處:http://blog.csdn.net/dapao123456789/article/details/44839177