需要python接口将机器移动到另一个文件夹

时间:2017-01-31 11:19:38

标签: python-2.7 virtual-machine vsphere pyvmomi pysphere

我试图在python中找到一个代码支持,用于在Datacenter的文件夹之间移动一台机器但没有成功,我在pysphere中看到你可以在克隆阶段定义文件夹而不是在机器之后已经克隆了。

This似乎是我的问题的解决方案,但它在powershell中,有人知道在python中对它的包装支持

1 个答案:

答案 0 :(得分:2)

您可以使用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])

在此示例中,我通过连接到vCenter创建ServiceInstance,然后我抓取SearchIndex的实例。 SearchIndex有几种方法可用于查找托管对象。在这个例子中,我决定使用FindByInventoryPath方法,但你可以使用任何适合你的方法。首先,我找到了Folder名为new_folder的实例,我想将VirtualMachine移动到其中。接下来我找到了我要移动的VirtualMachine。最后,我执行了Task,它将为我移动vm。该任务需要移动到文件夹中的对象列表的参数,在这种情况下,它只包含我要移动的一个vm的单个项目列表。从这里,您可以根据需要监控任务。

请记住,如果您使用FindByInventoryPath,则有许多隐藏文件夹在GUI中不可见。我发现使用ManagedObjectBrowser有时非常有帮助。

有用的文档链接:

相关问题