1

我正在尝试使用 pyVmomi 部署 ovf。我正在尝试遵循以下示例:https ://github.com/vmware/pyvmomi-community-samples/blob/master/samples/deploy_ovf.py 。

有两种 VCenter 设置,并且存在差异。在一个 vCenter 上,我可以部署 VM。另一方面,我的失败如下:

>>> spec_result = manager.CreateImportSpec(ovfd, rp_obj, datastore_obj,spec_params)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/aitang/virenvs/py343/lib/python3.4/site-packages/pyVmomi/VmomiSupport.py", line 570, in <lambda>
    self.f(*(self.args + (obj,) + args), **kwargs)
  File "/Users/aitang/virenvs/py343/lib/python3.4/site-packages/pyVmomi/VmomiSupport.py", line 376, in _InvokeMethod
    return self._stub.InvokeMethod(self, info, args)
  File "/Users/aitang/virenvs/py343/lib/python3.4/site-packages/pyVmomi/SoapAdapter.py", line 1350, in InvokeMethod
    raise obj # pylint: disable-msg=E0702
pyVmomi.VmomiSupport.InvalidType: (vmodl.fault.InvalidType) {
   dynamicType = <unset>,
   dynamicProperty = (vmodl.DynamicProperty) [],
   msg = '',
   faultCause = <unset>,
   faultMessage = (vmodl.LocalizableMessage) [],
   argument = 'ManagedObjectReference'
}

有人可以指出我如何解决此错误的方法吗?我试图查看此功能的作用,但找不到。

我试图设置 pdb 跟踪,结果它失败的原因是它返回了 500 响应。在正常工作的 VCenter 上,它返回 200 响应。那么为什么相同的调用会返回不同的结果呢?

4

1 回答 1

0

我使用了错误的数据存储。我使用的不是“Datastore”类型:

>>> type(datastore_obj)
<class 'pyVmomi.VmomiSupport.vim.StoragePod'>

当我使用它的一个 childEntity 时,它起作用了:

>>> type(datastore_obj.childEntity[0])
<class 'pyVmomi.VmomiSupport.vim.Datastore'>

以下是对调试有帮助的:我在 SoapAdapter.py 中放置了一个断点。当500返回给我时,它进入了pdb,我得到了我自己的请求,它在底部包含了这一行:

<datastore type="StoragePod">datastore-1</datastore>

当我将此与其他可用的 VCenter 进行比较时,我发现了这种差异:

<datastore type="Datastore">datastore-10</datastore>
于 2016-04-08T11:47:58.393 回答