PySphere send_file Ошибка HTTP 500

Я использую pysphere для взаимодействия с моим сервером esxi.

Одна из функций, которые я пытаюсь использовать, это send_file (описано здесь). Это приводит к следующему исключению:

  File "/usr/local/lib/python2.7/dist-packages/pysphere/vi_virtual_machine.py", line 1282, in send_file
    resp = opener.open(request)
  File "/usr/lib/python2.7/urllib2.py", line 410, in open
    response = meth(req, response)
  File "/usr/lib/python2.7/urllib2.py", line 523, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python2.7/urllib2.py", line 448, in error
    return self._call_chain(*args)
  File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 531, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 500: Internal Server Error

Я включил файлы трассировки, и они выглядят так (я показываю ответ)

RESPONSE:
200
OK
-------
Date: Wed, 10 Dec 2014 07:03:21 GMT
Cache-Control: no-cache
Connection: Keep-Alive
Content-Type: text/xml; charset=utf-8
Content-Length: 521

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<InitiateFileTransferToGuestResponse xmlns="urn:vim25"><returnval>https://*:443/guestFile?id=11&amp;token=52548475-79f4-6b02-a207-be5d1e3b0a8511</returnval></InitiateFileTransferToGuestResponse>
</soapenv:Body>
</soapenv:Envelope>

На самом сервере esxi я вижу в последних задачах, что был сделан запрос на передачу файла.

На этом этапе я в тупике. Я проверил все свои настройки по крайней мере пять раз. Я проверил, что я способен выполнять другие действия, и все они, похоже, работают нормально. Что я могу с этим поделать? Есть ли какие-то настройки, которые мне нужно включить на сервере esxi? ВМ? что-то в брандмауэре может быть?

Аналогичная проблема: https://code.google.com/p/pysphere/issues/detail?id=53


Редактировать. Я хочу иметь возможность передавать файлы на виртуальную машину. Если есть альтернативный и надежный метод, это тоже хорошо.


person Inbar Rose    schedule 10.12.2014    source источник


Ответы (1)


Я пытался использовать send_file в pysphere, это было болезненно и медленно. По какой-то причине отправка файлов имеет проблемы с двоичными файлами. Мой обходной путь: создайте iso-файл с вашими двоичными файлами, смонтируйте его на виртуальной машине (для него существует pysphere api), создайте bat-файл (он должен найти правильный компакт-диск и скопировать ваши файлы). Отправить пакет через send_file. Запустите его с помощью start-process.

Yapp, у send_files проблемы с большими файлами, и нужно использовать небольшой хак https://code.google.com/p/pysphere/issues/detail?id=16

person Борис Иванов    schedule 10.06.2015