Получение информации о времени выполнения с виртуальной машины с помощью Vsphere in Fog (Ruby)

Я сделал скрипт на ruby, который извлекает информацию из виртуальной машины, используя Vsphere API с драгоценным камнем Fog.

Я хочу получить доступ к VirtualMachine:VirtualMachineRuntimeInfo:runtime в Vsphere API.

Моя проблема в том, что для доступа к этому ресурсу мне нужно получить объект виртуальной машины. Я должен использовать метод «get_vm_ref» в файле get_virtual_machine.rb, но это защищенный метод.

Я использовал патч обезьяны, чтобы использовать эту защищенную функцию, но я хотел бы знать, есть ли другой способ (правильный способ) сделать это?

Я не нашел другого способа в библиотеке vsphere получить 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

person Paul    schedule 12.05.2015    source источник


Ответы (1)


Я нашел способ обойти «защищенный», я не думаю, что это хорошая практика, но он работает без использования патча обезьяны:

vm = vsphere.send :get_vm_ref, vm_id
person Paul    schedule 12.05.2015