Исключение 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>
Другие вопросы по тегам