Исключение pyVmomi для менеджера.CreateImportSpec
Я пытаюсь развернуть ovf с помощью pyVmomi. Я пытаюсь следовать этому примеру: https://github.com/vmware/pyvmomi-community-samples/blob/master/samples/deploy_ovf.py.
Есть две настройки VCenter, и есть различия. На одном VCenter я могу развернуть виртуальную машину. С другой стороны, у меня есть сбой, как показано ниже:
>>> 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 ответ
Я использовал неправильное хранилище данных. Тот, который я использовал, не был типа "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>