我在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
答案 0 :(得分:0)
我找到了一种绕过“受保护”的方法,我不认为这是一种很好的做法,但它不使用猴子补丁工作:
vm = vsphere.send :get_vm_ref, vm_id