作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我想查看我 vcenter 中所有虚拟机的一些信息,现在我有:
require 'rbvmomi'
vim1 = RbVmomi::VIM.connect host: 'vcenter.foo.tld', ssl: true, insecure: true, user: 'keith', password: 'NSABACKDOOR'
dc1 = vim1.serviceInstance.find_datacenter("Datacenter Name") or fail "datacenter not found"
def list_vms(dc,vim)
dc.vmFolder.children.each do |vm|
if vm.is_a? RbVmomi::VIM::VirtualMachine
puts vm.name
end
end
end
list_vms(dc1,vim1)
但这只会返回一个数据中心的主机(即放置主机名),并且只会返回文件夹层次结构中顶层的主机。无论身在何处,我都需要它们。
最佳答案
差不多了 - 我遇到了完全相同的问题 - 你的循环正在跳过子文件夹。要获取所有 VM,您需要向下递归遍历它们。尝试这样的事情(从我自己的工作代码中提取):
def vms(folder) # recursively go thru a folder, dumping vm info
folder.childEntity.each do |x|
name, junk = x.to_s.split('(')
case name
when "Folder"
vms(x)
when "VirtualMachine"
puts x.name
else
puts "# Unrecognized Entity " + x.to_s
end
end
end
这显然是从数据中心的顶级文件夹开始的,而不是 DC 本身。我的设置中实际上并没有多个数据中心——但 find_datacenter 似乎不支持类似 .each 的东西——所以你可能想把它包装在一个循环中,比如:
dcs = ['firstdc', 'seconddc', 'thirddc']
dcs.each do |dc|
vms(vim1.serviceInstance.find_datacenter(dc).vmFolder)
end
关于ruby - 使用 API (rbvmomi) 获取所有虚拟机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19812868/
我正在使用 rbvmomi(ruby vsphere sdk)启动 vsphere 连接。有人知道忽略未签名 SSL 证书错误的标志吗? 1.9.2-p320 :003 > vim = RbVmomi
我想查看我 vcenter 中所有虚拟机的一些信息,现在我有: require 'rbvmomi' vim1 = RbVmomi::VIM.connect host: 'vcenter.foo.tld
我正在做一个项目,我正在使用 RbVmomi 克隆一个 VM,在克隆完成后我想重新配置 VM。 克隆工作得很好,但是当我想更改 VM 的磁盘大小时我遇到了一些问题。我可以更改 CPU 数量和内存大小,
我是一名优秀的程序员,十分优秀!