Не удалось создать каталог верхнего уровня с помощью pyvmomi - PullRequest
0 голосов
/ 30 мая 2020

Я использую python 3.7 и pyvmomi 6.7. Я подключаюсь к хосту exsi (бесплатная лицензия версии 6.7) и пытаюсь развернуть виртуальную машину с помощью моего python скрипта. На одном из шагов я пытаюсь создать каталог (для хранения iso и vmdk) в хранилище данных. Это фрагмент кода для создания каталога,

fmgr = host['content'].fileManager
dco = vm['storage']['root']['dc']
dirname = '[' + dso.info.name + '] ' + vm['name']
logger.info('Creating Directory {} on {}'.format(
  dirname, dso.info.name))
try:
  fmgr.MakeDirectory(name=dirname, datacenter=dco,
      createParentDirectories=False)
except vim.fault.FileAlreadyExists as e:
  logger.info('Directory {} already exists on {} - {}'.format(
    dirname, dso.info.name, str(e)))
  return True
except vim.fault.InvalidDatastore as e:
  logger.error('Invalid datastore: {} - {}'.format(
    dso.info.name, str(e)))
  return False
except vim.fault.RuntimeFault as e:
  logger.error('Runtime error while creating directory {} on {} - {}'.format(
    dirname, dso.info.name, str(e)))
  return False
except Exception as e:
  logger.error('Failed to create top directory {}. - {}'.format(
    dirname, str(e)))

Я получаю эту ошибку при попытке создать каталог,

pyVmomi.VmomiSupport.RestrictedVersion: (vim.fault.RestrictedVersion) {
   dynamicType = <unset>,
   dynamicProperty = (vmodl.DynamicProperty) [],
   msg = 'Current license or ESXi version prohibits execution of the requested operation.',
   faultCause = <unset>,
   faultMessage = (vmodl.LocalizableMessage) []
}

Тот же код может создать каталог для exsi версии 6.5 (бесплатная лицензия) Согласно разделу политики совместимости из https://github.com/vmware/pyvmomi, exsi 6.7 должна поддерживаться.

Существуют ли какие-либо функциональные ограничения для версий?

Есть ли у нас другой способ создания каталога верхнего уровня в хранилище данных?

Есть ли другие python библиотеки для управление виртуальными машинами в VMware (которая поддерживает начиная с exsi 6.0)?

1 Ответ

0 голосов
/ 10 июля 2020

Ключевым моментом является тип лицензии хоста ESXi. Если у него есть бесплатная лицензия, то API будет разрешать операции только для чтения, а все другие операции будут заблокированы сообщением « Текущая лицензия или версия ESXi запрещает выполнение запрошенной операции ». Цитата из одного из блогов vmware s,

Доступ к vSphere API регулируется различными выпусками vSphere, которые предоставляют доступ как для чтения, так и для записи к API. Если вы используете vSphere Hypervisor (бесплатная версия ESXi), vSphere API будет доступен только для чтения.

Я пробовал свой код на другой лицензированной версии ESXi и угадайте, что? код успешно выполнил и создал виртуальные машины. Нашел один из ответов в ServerFault , в котором указано то же самое.

Проблема заключалась в исходных документах для SDK, Python API или в образцах сообщества ничего не говорится об этом ограничении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...