Исключение pyVmomi для manager.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. Так почему же один и тот же вызов должен возвращаться по-разному?


person aitang    schedule 05.04.2016    source источник


Ответы (1)


Я использовал неправильное хранилище данных. Тот, который я использовал, не был типа «Хранилище данных»:

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

Когда я использовал один из его дочерних объектов, это сработало:

>>> 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>
person aitang    schedule 08.04.2016