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