2016-09-13 15 views
2

Я использую pyvmomi VMWare, чтобы управлять виртуальными машинами моего ESXi вVMWare pyvmomi 6.0.0: Операция не поддерживается

Я использую:

pyvmomi-6.0.0 с питон 2.7.5 клонировать виртуальную машину на

VMWare ESXi 6.0.0 Update 1 который управляется

VCENTER сервера 6

Использование pyvmomi, я могу успешно извлекать объекты ут, перебирать датацентрах, датасторов, ут и т.д. ... Но я не могу клонировать их.

я подключаю к моему ESXi как корень

Я всегда получаю следующее сообщение об ошибке: (я попытался клонировать виртуальные машины и создавать папки на ESXI)

./test.py 
Source VM : TEST_A 
Pool cible : Pool_2 
Traceback (most recent call last): 
    File "./vmomiTest.py", line 111, in <module> 
    sys.exit(main()) 
    File "./vmomiTest.py", line 106, in main 
    tasks.wait_for_tasks(esxi, [task]) 
    File "/home/user/dev/tools/tasks.py", line 53, in wait_for_tasks 
    raise task.info.error 
pyVmomi.VmomiSupport.NotSupported: (vmodl.fault.NotSupported) { 
    dynamicType = <unset>, 
    dynamicProperty = (vmodl.DynamicProperty) [], 
    msg = 'The operation is not supported on the object.', 
    faultCause = <unset>, 
    faultMessage = (vmodl.LocalizableMessage) [] 
} 

Когда я прочитан /var/log/hostd.log файл на ESXi, я получаю следующее:

2016-09-13T10: 15: 17.775Z информация hostd [51F85B70] [составитель @ 6876 югу = Vimsvc.TaskManager opID = 467be296 пользователь = корень] Задача создания: haTask-2-vim.VirtualMachine.clone-416315

2016-09-13T10: 15: Информация о 17.779Z hostd [51F03B70] [составитель @ 6876 суб = По умолчанию opID = 467be296 пользователь = корень] AdapterServer поймал исключение: vmodl.fault.NotSupported

2016-09-13T10: 15: 17.779Z Информация hostd [51F03B70] [ORIGINATOR @ 6876 югу = Vimsvc.TaskManager opID = 467be296 пользователь = корень] Task Выполнил: haTask-2-vim.VirtualMachine.clone-416315 ошибка Статус

есть любые другие предпосылки, с которыми я не согласен? У кого-нибудь есть ключ?

Используя следующий test.py пример кода:

def get_obj_case_insensitive(content, vimtype, name, folder=None): 
    obj = None 
    if not folder: 
     folder = content.rootFolder 
    container = content.viewManager.CreateContainerView(folder, vimtype, True) 
    for item in container.view: 
     if item.name.lower() == name.lower(): 
      obj = item 
      break 
    return obj 

def get_obj(content, vimtype, name, folder=None): 
    obj = None 
    if not folder: 
     folder = content.rootFolder 
    container = content.viewManager.CreateContainerView(folder, vimtype, True) 
    for item in container.view: 
     if item.name == name: 
      obj = item 
      break 
    return obj 

def main(): 
    esxi = connect.SmartConnect(user=esxi_user, 
          pwd=esxi_password, 
          host=esxi_addr, 
          port=443) 
    atexit.register(connect.Disconnect, esxi) 

    content = esxi.RetrieveContent() 

    source_vm = get_obj(content, [vim.VirtualMachine], source_vm_name) 
    if source_vm == None: 
     print "Source VM %s doesn't exist, couldn't create VM" % source_vm_name 
     return None 

    print "Source VM Found : %s" % source_vm.config.name 

    wanted_pool = get_obj_case_insensitive(content, [vim.ResourcePool], wanted_pool_name) 
    if wanted_pool == None: 
     print "Resource Pool couldn't be found: Pool=%s" % wanted_pool_name 
     return None 
    else: 
     print "Pool Found : %s " % wanted_pool.name 

    new_location = vim.vm.RelocateSpec() 
    new_location.diskMoveType = 'createNewChildDiskBacking' 
    new_location.datastore = content.rootFolder.childEntity[0].datastore[0] 
    new_location.pool = wanted_pool 

    ESXI.ensure_snapshot_exists(source_vm) 

    clone_spec = vim.vm.CloneSpec(template=False, location=new_location, snapshot=source_vm.snapshot.rootSnapshotList[0].snapshot) 
    task = source_vm.Clone(name=dest_vm_name, folder=source_vm.parent, spec=clone_spec) 

    tasks.wait_for_tasks(esxi, [task]) 
    print "Cloning %s into %s was successfull" % (source_vm.config.name, dest_vm_name) 

if __name__ == '__main__': 
    sys.exit(main()) 

ответ

2

Оказывается, это потому, что VMWARE отключил многие операции при подключении напрямую к ESXi.

По-видимому, я должен был подключиться к моему vCenterServer, чтобы правильно клонировать мою виртуальную машину.

+1

Спасибо за ответ. Я боролся с ним две недели. Они должны иметь лучшую документацию. – Prostak