Вы можете сделать это с помощью pyVmomi. Я бы избегал pysphere, потому что pyVmomi поддерживается VMWare, а pysphere не обновлялся в течение 4 или более лет.
Тем не менее, вот пример кода, который использует pyVmomi
service_instance = connect.SmartConnect(host=args.host,
user=args.user,
pwd=args.password,
port=int(args.port))
search_index = service_instance.content.searchIndex
folder = search_index.FindByInventoryPath("LivingRoom/vm/new_folder")
vm_to_move = search_index.FindByInventoryPath("LivingRoom/vm/test-vm")
move_task = folder.MoveInto([vm_to_move])
В этом примере я создаю ServiceInstance
, подключившись к vCenter, затем я получаю экземпляр SearchIndex
. SearchIndex
имеет несколько методов, которые можно использовать для поиска управляемых объектов. В этом примере я решил использовать метод FindByInventoryPath
, но вы можете использовать любой, который вам подойдет. Сначала я нахожу экземпляр Folder
с именем new_folder
, в который я хочу переместить свой VirtualMachine
. Затем я нахожу VirtualMachine
, который хочу переместить. Наконец, я выполняю Task
, который переместит виртуальную машину для меня. Эта задача принимает параметр списка объектов, которые нужно переместить в папку, и в этом случае это один список элементов, содержащий только одну виртуальную машину, которую я хочу переместить. Отсюда вы можете контролировать задачу, если хотите.
Имейте в виду, что если вы используете FindByInventoryPath
, есть много скрытых папок, которые не видны из графического интерфейса. Я обнаружил, что с помощью ManagedObjectBrowser иногда очень полезен.
Полезные ссылки на документы:
person
Michael Rice
schedule
31.01.2017