中国领先的IT技术网站
|
|

Java版OpenStack-API开发实例二则

本文介绍了两种Java版本的OpenStack-API,分别是JCoulds 和 OpenStack4j,供大家学习参考。

作者:Jackak_Song来源:AK48的专栏|2015-04-03 10:29

沙龙活动 | 去哪儿、陌陌、ThoughtWorks在自动化运维中的实践!10.28不见不散!


本文介绍了两种Java版本的OpenStack-API,分别是JCoulds 和 OpenStack4j,供大家学习参考。

Java版OpenStack-API开发实例二则

JClouds

1.介绍

jclouds -该API提供云计算环境的可移植抽象层以及云规范特性,支持包括 Amazon, VMWare, Azure, and OpenStack 等云计算平台,其中针对OpenStack,目前支持Nova、cinder、glance、Neutron、Keystone、swift等API接口,但是不支持Ceilometer的API接口。

2.使用与Jar包

官方文档——强烈推荐

http://jclouds.apache.org/guides/openstack/

jcloudsjar包使用maven安装下载管理即可;

3.举例

  1. import com.google.common.collect.ImmutableSet; 
  2.  
  3. import com.google.common.io.Closeables; 
  4.  
  5. import com.google.inject.Module; 
  6.  
  7. import org.jclouds.ContextBuilder; 
  8.  
  9. import org.jclouds.logging.slf4j.config.SLF4JLoggingModule; 
  10.  
  11. import org.jclouds.openstack.nova.v2_0.NovaApi; 
  12.  
  13. import org.jclouds.openstack.nova.v2_0.domain.Server; 
  14.  
  15. import org.jclouds.openstack.nova.v2_0.features.ServerApi; 
  16.  
  17. import java.io.Closeable; 
  18.  
  19. import java.io.IOException; 
  20.  
  21. import java.util.Set; 
  22.  
  23. public class JCloudsNova implements Closeable { 
  24.  
  25. private final NovaApi novaApi; 
  26.  
  27. private final Set regions; 
  28.  
  29. public static void main(String[] args) throws IOException { 
  30.  
  31. JCloudsNova jcloudsNova = new JCloudsNova(); 
  32.  
  33. try { 
  34.  
  35. jcloudsNova.listServers(); 
  36.  
  37. jcloudsNova.close(); 
  38.  
  39. catch (Exception e) { 
  40.  
  41. e.printStackTrace(); 
  42.  
  43. finally { 
  44.  
  45. jcloudsNova.close(); 
  46.  
  47.  
  48.  
  49. public JCloudsNova() { 
  50.  
  51. Iterable modules = ImmutableSet.of(new SLF4JLoggingModule()); 
  52.  
  53. String provider = "openstack-nova"
  54.  
  55. String identity = "demo:demo"// 项目管理员和用户 
  56.  
  57. String credential = "devstack";// 用户密码 
  58.  
  59. novaApi = ContextBuilder.newBuilder(provider) 
  60.  
  61. .endpoint("http://xxx.xxx.xxx.xxx:5000/v2.0/")//API地址 
  62.  
  63. .credentials(identity, credential) 
  64.  
  65. .modules(modules) 
  66.  
  67. .buildApi(NovaApi.class); 
  68.  
  69. regions = novaApi.getConfiguredRegions(); 
  70.  
  71.  
  72. private void listServers() { 
  73.  
  74. for (String region : regions) { 
  75.  
  76. ServerApi serverApi = novaApi.getServerApi(region); 
  77.  
  78. System.out.println("Servers in " + region); 
  79.  
  80. for (Server server : serverApi.listInDetail().concat()) { 
  81.  
  82. System.out.println(" " + server); 
  83.  
  84.  
  85.  
  86.  
  87. public void close() throws IOException { 
  88.  
  89. Closeables.close(novaApi, true); 
  90.  
  91.  
  92. }12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 

4.测试效果:

比较稳定,而且API文档很全,教好理解;

Java版OpenStack-API开发实例二则

OpenStack4j

1.介绍

针对OpenStack的Web-API,包含Keystone、Nova、Neutron、Glance、Cinder

、Swift、Ceilometer、Heat的API支持,更新速度快,有问题需求及时联系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时,jdk版本为1.6,容易报 version 51 错误。)

3.举例:

  1. List openStackNetworkList=new ArrayList(); 
  2.  
  3. openStackNetworkList.add("df6effa2-a1b5-400a-8ab1-457673591aa1"); 
  4.  
  5. String openstackImageId = "" 
  6.  
  7. String openstackFlavorId= ""
  8.  
  9. String openstackServerName = ""
  10.  
  11. String openstackZone = "nova:compute2"
  12.  
  13. ServerCreate sc = Builders.server().name(openstackServerName) 
  14.  
  15. .flavor(openstackFlavorId) 
  16.  
  17. .image(openstackImageId) 
  18.  
  19. .networks(openStackNetworkList) 
  20.  
  21. .availabilityZone(openstackZone) 
  22.  
  23. .build(); 
  24.  
  25. // Boot the Server 
  26.  
  27. OSClient os = OSFactory.builder() 
  28.  
  29. .endpoint("http://x.x.x.x:5000/v2.0/"
  30.  
  31. .credentials("xxx","xxx"
  32.  
  33. .tenantName("xxx"
  34.  
  35. .authenticate(); 
  36.  
  37. Server server = os.compute().servers().boot(sc);1234567891011121314151617181920212223 

4.使用效果

API简单易用;而且支持Ceilometer和Heat,推荐使用。

博文出处:http://blog.csdn.net/dapao123456789/article/details/44839177

【编辑推荐】

  1. 揭秘!6个存在于OpenStack开发者中的误区
  2. 【博文推荐】如何进行 OpenStack 的性能测试及平台功能性测试
  3. 开放混合云实现OpenStack水平无限扩展
  4. 开始减少使用Java应用服务器,迎接Docker容器吧!
  5. 为 Java EE 应用提供的 9 种 Docker 方法
【责任编辑:Ophira TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

非常网管——网络服务

本书使用通俗易懂的语言,通过大量的实例,从实际应用的角度出发,全面系统地介绍了网络服务操作系统平台、电子邮件系统、Web站点和FTP站点...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊
× Python最火的编程语言