Как использовать vsock в esxi 6.7?

#python-3.x #esxi

Вопрос:

Я запускаю сценарий внутри esx (не в виртуальной машине, а на самом esx), и когда я пытаюсь его использовать socket.AF_VSOCK , он говорит, что его не существует. Я получаю то же самое сообщение на машине Windows на esx. Я установил vm-инструменты и vmci_socket.h существует.

Версия esxi-6.7, версия python-3.5

ОБНОВЛЕНИЕ: Я обнаружил , что семейство есть 40 , оно работает на Linux, но не на esxi

esxi:

 import socket
s = socket.socket(40, socket.SOCK_STREAM)
 
 Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/build/mts/release/bora-14320388/bora/build/esx/release/vmvisor/sys-boot/lib64/python3.5/socket.py", line 134, in __init__
OSError: [Errno 97] Address family not supported by protocol
 

линукс:

 In [2]: s = socket.socket(socket.AF_VSOCK, socket.SOCK_STREAM)

In [3]: s
Out[3]: <socket.socket fd=13, family=AddressFamily.AF_VSOCK, type=SocketKind.SOCK_STREAM, proto=0, laddr=(4294967295, 4294967295)>
 

ОБНОВЛЕНИЕ 2:
На ESXi есть /dev/vsock устройство, и оно возвращается 2 в качестве CID (как и ожидалось)

 >>> import fcntl
>>> with open("/dev/vsock", "rb") as f:
...     r = fcntl.ioctl(f, 1977, "    ")
>>> r
b'x02x00x00x00'