manager.CreateImportSpec上的pyVmomi异常

时间:2016-04-05 20:04:51

标签: pyvmomi

我正在尝试使用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响应。那么为什么同一个呼叫会以不同的方式返回呢?

1 个答案:

答案 0 :(得分:0)

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

>>> 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>