Меня попросили написать код на Python, который переведет хост VMWare ESXi в режим обслуживания.Мне дали имя виртуального центра test-vc
и имя хоста хоста ESXi test-esxi-host
и эту ссылку ...
https://github.com/vmware/pyvmomi/blob/master/docs/vim/HostSystem.rst
.... который предоставляет некоторую документацию по методу, который я, как предполагается, буду использовать, EnterMaintenanceMode(timeout, evacuatePoweredOffVms, maintenanceSpec)
.
Я действительно полностью потерялся в том, что делать на самом деле, и мог бы использовать некоторую помощь.Я попытался сделать это с консоли Python:
from pyVmomi import vim
vim.HostSystem.EnterMaintenanceMode(timeout=0)
Что приводит к этой трассировке ошибки:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/apps/cpm/red/env/lib/python2.7/site-packages/pyVmomi/VmomiSupport.py", line 574, in __call__
return self.f(*args, **kwargs)
TypeError: _InvokeMethod() takes at least 2 arguments (1 given)
Кроме того, я немного запутался, как подпрограмма EnterMaintenanaceMode
знаю, что я хочу поместить хост test-esxi-host
в виртуальный центр test-vc
?
Обновление: думаю, я понял это.Вот что, я думаю, мне нужно сделать:
from pyVim.connect import SmartConnect, Disconnect
from pyVmomi import vim
import atexit
si = SmartConnectNoSSL(host=vc_host, user=user, pwd=pwd)
cont = si.RetrieveContent()
atexit.register(Disconnect, si) # maybe. I am not really sure what this does
objview = si.content.viewManager.CreateContainerView(si.content.rootFolder, [vim.HostSystem], True)
objview.view[0].EnterMaintenanceMode(0)
Конечно, строка
objview.view[0].EnterMaintenanceMode(0)
наверняка вызовет хаос, так как я понятия не имею, хозяин ли это, 'test-esxi-host ', я хочу перевести в режим обслуживания.Я думаю, я мог бы сделать это
for h in objview.view:
if h.name == 'test-esxi-host'
h.EnterMaintenanceMode(0)
Я надеюсь, что есть лучший способ сделать выше.Что-то вроде
get_host(objview.view, 'test-esxi-host').EnterMaintenanceMode(0)