2013-07-03 72 views
0

背景:vijava reconfigVM_task后,我们是否需要刷新Vsphere Web客户端?

在一个项目中,我需要用reconfigVM_task删除一个的虚的所有virtualDisks,然后,我需要继续运行,这利用其它配置文件到多个virtualDisks添加到这个虚拟的第二reconfigVM_task机。

问题:

的firstTask(删除虚拟机的所有virtualDisk)工作正常,但在此之后,secondTask(添加多个virtualDisks失败)。 VCENTER继续显示"Cannot complete operation, becuase the file or folder [xxxdatastore] vmName/virtualDiskName.vmdk is already exists"

我检查过,vcenterURL /文件夹显示虚拟磁盘已被删除。如果我手动刷新vSphere Web Client,然后重新添加虚拟磁盘,它将起作用。

问:

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

  2. 或任何人都知道如何使用vijava API来刷新数据存储使删除能够被识别?

回答

0

我在过去有类似的问题,我没有把.waitForTask()放在函数调用的最后。

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

+0

其实我加了.waitForTask(),但它仍然不适合我。在项目中,需要完成一批删除磁盘作业,然后在一个主线程中添加磁盘作业。最后我尝试了reconfigVM_task哪一次只做一个动作(添加或删除)。最后它工作。虽然我不清楚其中的原因。 – user2206782

+0

无论如何感谢您的投入。 – user2206782

0

顺便说一句,你可以删除所有的磁盘,并在单reconfigVM_task操作添加新的。只要确保您的VirtualDeviceConfigSpecOperation.remove操作在VirtualDeviceConfigSpec[]

+0

感谢您的输入。我通过每个reconfigVM_Task解决它只处理一个动作(添加或删除),它的工作原理。你建议我尝试过,但添加操作的一部分不能成功。所以我简化了重新配置,每次只关注一个动作,这样它就适用于我的情况。 – user2206782

0

中首先解决此问题,方法是将每个操作集中在一起。例如我需要检查当前的VM1VM2,VM1需要删除2个设备并添加1个新设备并VM2需要删除1个设备然后添加1个设备。

之前我收集VM1VM2的所有删除操作第一然后收集VM1和VM2的添加动作reconfigVM_Task的VirtualDeviceCOnfigSpec[]。我再次检查了所有的virtualDeviceCOnfigSpec设置是否正确,并且确实有waitForTask等笔记在vmware论坛上提到过类似的问题。

最后,通过做VM1delete-reconfig然后VM2add-reconfig解决这个问题。然后到VM2一样。这一次,它适用于我的项目。但它失败的真正原因我并不十分清楚。

相关问题