vijava在重新配置VM_task之后,我们是否需要刷新Vsphere web客户端



背景:

在一个项目中,我需要使用reconfigVM_task删除一个虚拟机的所有虚拟磁盘,然后,我需要继续运行第二个reconfigVM_task,它使用其他配置文件向该虚拟机添加多个虚拟磁盘。

问题:

第一个任务(删除vm的所有虚拟磁盘)工作正常,但之后第二个任务(添加多个虚拟磁盘失败)。VCENTER保持显示"Cannot complete operation, becuase the file or folder [xxxdatastore] vmName/virtualDiskName.vmdk is already exists"

我已经检查过,显示虚拟磁盘的vcenterURL/文件夹已经被删除。如果我手动刷新vsphere web客户端,然后重新添加virtualDisk,它就可以工作了。

问题:

  1. 有人知道如何解决"Add virtualDisks but has error 'Cannot complete operation because xxx.vmdk already exist"问题吗?

  2. 或者有人知道如何使用vijava api刷新数据存储使删除能够识别吗?

我过去也遇到过类似的问题,没有将.waitForTask()放在函数调用的末尾。

如果你这样做,你不应该得到任何VMDK已经存在的错误

BTW,您可以在单个reconfigVM_task操作中删除所有磁盘并添加新磁盘。只需确保您的VirtualDeviceConfigSpecOperation.remove操作在VirtualDeviceConfigSpec[] 中处于第一位

通过集中每个操作解决了这个问题。例如,我需要检查当前的VM1VM2VM1需要删除2个设备并添加1个新设备,VM2需要删除1个设备然后添加1个设备。

在我收集VM1VM2的所有删除操作之前,首先收集VM1和VM2的添加操作以重新配置VM_Task的VirtualDeviceCOnfigSpec[]。我仔细检查了所有virtualDeviceCOnfigSpec设置是否正确,并且确实有waitForTask和vmware论坛上提到的其他类似问题。

最后,通过先做VM1 delete-reconfig,再做VM2 add-reconfig来解决这个问题。VM2也是如此。这一次,它适用于我的项目。但它失败的真正原因我不太清楚。

相关内容

最新更新