从Fog中使用Vsphere的VM检索runtimeInfo(Ruby)

时间:2015-05-12 12:06:35

标签: ruby vmware fog vsphere

我在ruby中创建了一个脚本,它使用带有Fog gem的Vsphere API从VM检索信息。

我希望在Vsphere API中访问VirtualMachine:VirtualMachineRuntimeInfo:runtime。

我的问题是要访问此资源,我需要检索VM对象。我必须使用方法" get_vm_ref"在get_virtual_machine.rb文件中,但它是受保护的方法。

我使用了一个猴子补丁来使用这个受保护的功能,但是我想知道是否有另一种方法(一种正确的方法)来做它?

我还没有在vsphere lib中找到另一种从VM检索runtimeInfo的方法。

这是我的代码:

#Load credentials
config_par1 = YAML.load_file('config_par1.yml')
#Connexion
vsphere = Fog::Compute.new(config_par1.merge({:provider => 'Vsphere'}))
#Retrieve VM id
vm_id = vsphere.list_virtual_machines.first['id']
#Here is the problem, I use a protected method in Fog to access runtimeInfo
vm = vsphere.get_vm_ref(vm_id)
#Examples
maxCpu = vm.runtime.maxCpuUsage
maxMemory = vm.runtime.maxMemoryUsage

1 个答案:

答案 0 :(得分:0)

我找到了一种绕过“受保护”的方法,我不认为这是一种很好的做法,但它不使用猴子补丁工作:

vm = vsphere.send :get_vm_ref, vm_id