如何获取OpenNebula XML-RPC API所需的调用参数
OpenNebula RPC方法参数查询及虚拟机创建指引
一、最快的参数查询方式:调用pyone内置文档
pyone库是OpenNebula官方自动生成的Python绑定,所有方法都自带参数说明文档,不需要翻阅源码,直接在Python交互环境中用help()函数即可查看:
# 示例:查询vmpool.info方法的参数说明 help(one.vmpool.info)
输出会直接标注每个参数的类型、含义,你之前用到的one.vmpool.info四个参数依次为:
- 过滤标志:
-1代表返回当前用户有权限查看的所有虚拟机 - 偏移量:分页查询起始位置,
-1代表不分页 - 数量限制:分页查询返回条数,
-1代表返回所有 - 状态过滤:
-1代表返回所有状态的虚拟机
二、方法对应规则(通用所有API调用)
pyone方法和官方XML-RPC接口、CLI命令一一对应,规则固定:
- 官方XML-RPC的
one.xxx.yyy方法,对应pyone的one.xxx.yyy方法,仅需省略第一个session参数(初始化OneServer时已传入,pyone自动携带) - CLI命令
onexxx 动作的参数顺序,和对应pyone方法的参数顺序完全一致,可直接对照CLI命令的帮助信息确定参数
三、创建虚拟机的方法示例
创建虚拟机对应one.vm.allocate方法,需传入3个参数:
- 字符串格式的虚拟机模板内容
- 布尔值:是否设置为持有状态暂不部署,一般传
False即可 - 整型数据存储ID:传
0代表系统自动选择合适的数据存储
示例代码如下:
import pyone one = pyone.OneServer('http://oneserver:2633/RPC2', session='admin:pass') # 定义虚拟机模板,格式和界面/CLI使用的模板完全一致 vm_template = """ NAME = "test-api-vm" CPU = 1 MEMORY = 2048 DISK = [ IMAGE_ID = 2, IMAGE_UNAME = "oneadmin" ] NIC = [ NETWORK_ID = 1, NETWORK_UNAME = "oneadmin" ] GRAPHICS = [ TYPE = "VNC", LISTEN = "0.0.0.0" ] """ # 调用创建方法,返回新虚拟机的ID new_vm_id = one.vm.allocate(vm_template, False, 0) print(f"创建成功,虚拟机ID:{new_vm_id}")
内容的提问来源于stack exchange,提问作者Eugene Prodan
相关产品推荐
相关产品推荐

