我正在努力寻找一种通过使用vSphere SDK JAVA API删除虚拟机的方法,但似乎没有任何效果。据我所知,我需要获取虚拟机托管对象的实例并调用 Destroy_Task(),但到目前为止,我只能通过使用 PropertyCollector 获取虚拟机的 ManagedObjectReference,这对这个特定任务没有帮助。
我在互联网上找不到任何可以说明如何做到这一点的例子,希望这里有人可以帮助我。
提前致谢
我设法解决了它。所以 ManagedObject 是一个服务器端对象,在客户端我们只能访问一个 ManageObjectReference,
要执行 ManagedObject 的方法,我们需要通过 VimPortType vimPort 调用它们。因此,通过 API 删除虚拟机的步骤是
- 我们得到特定虚拟机的托管对象引用
- 调用 vimPort(mor) where mor in ManagedObjectReference 从步骤 1 开始。
仅此而已。
使用 java API 在 VMware 实例上执行操作非常容易。
- 获取服务实例
- 从服务实例获取根文件夹
- 使用根文件夹中的 vmname 搜索虚拟机
- 执行操作
Folder rootFolder = serviceInstance.getRootFolder();
InventoryNavigator inventoryNavigator = new InventoryNavigator(rootFolder);
vm = (VirtualMachine) inventoryNavigator.searchManagedEntity(VirtualMachine.class.getSimpleName(), vmName);
Task task = vm.powerOffVM_Task();
task.waitForTask();
Task task1 = vm.destroy_Task();
到目前为止,我已经处理了几乎所有云的java api。但是VMware的API是最好的。你只需要深入研究它。