Hello World, OpenNebula Cloud API 编程
2012年01月16日 | 标签: cloud, oca, opennebula, opennebula cloud api, python, ruby
先报告一下我们云计算项目的进度。去年休假前订购的服务器和部件已经陆续到货了,计算节点采用的是 Dell PowerEdge M710HD 刀片服务器,特别为数据中心级虚拟应用设计,海量内存、密集 IO 吞吐等优势,特别适合云计算、虚拟机等应用。现在正在等 Dell 的售后技术人员过来安装服务器和存储阵列,有些电源和机柜问题需要解决,顺利的话下周服务器可以上线。
OpenNebula 提供了 XML-RPC 的方式访问 OpenNebula Cloud Api (OCA),这样就允许不同操作系统、不同语言编写的客户端程序可以通过 XML-RPC 远程调用的方式来访问 OpenNebula 服务。下面通过两个不同语言编写的最简单例子抛砖引玉一下,来看看如何是如何与 OCA 打交道的。
OpenNebula 绝大部分是由 Ruby 编写的,其提供的 Ruby OCA API 实现当然是最丰富和完整的。先安装 Ruby OCA Bindings:
$ sudo gem install oca
用 Ruby 编写一小段代码试验一下,以下代码用来打印当前云里每个计算结点的 hostname:
#!/usr/bin/ruby require 'rubygems' require 'oca' include OpenNebula # OpenNebula credentials CREDENTIALS = "oneadmin:vpsee" # XML_RPC endpoint where OpenNebula is listening ENDPOINT = "http://localhost:2633/RPC2" client = Client.new(CREDENTIALS, ENDPOINT) host_pool = HostPool.new(client) rc = host_pool.info # Print all the hostname from the host pool host_pool.each do |host| puts host.name end
再来看看用 Python 如何编写上面类似功能的代码。安装 Python OCA Bindings:
$ sudo easy_install oca
用 Python 编写一小段代码看一下:
#!/usr/bin/python import oca # OpenNebula credentials CREDENTIALS = "oneadmin:vpsee" # XML_RPC endpoint where OpenNebula is listening ENDPOINT = "http://localhost:2633/RPC2" client = oca.Client(CREDENTIALS, ENDPOINT) host_pool = oca.HostPool(client) host_pool.info() # Print all the hostname from the host pool for host in host_pool: print host.name
应该没人会想在这种情况下用 Java 或 C++ 吧,Programming Examples 里面提供的 Java OCA 和 C++ 例子比 Ruby, Python 复杂得多。