mirror of
https://github.com/GNS3/gns3-server
synced 2025-01-11 16:41:04 +00:00
Fixes Windows named pipe issue. Fixes #340.
This commit is contained in:
parent
6edb41ded7
commit
32f9baf682
@ -30,7 +30,7 @@ import asyncio
|
|||||||
|
|
||||||
from pkg_resources import parse_version
|
from pkg_resources import parse_version
|
||||||
from gns3server.utils.telnet_server import TelnetServer
|
from gns3server.utils.telnet_server import TelnetServer
|
||||||
from gns3server.utils.asyncio import wait_for_file_creation
|
from gns3server.utils.asyncio import wait_for_file_creation, wait_for_named_pipe_creation
|
||||||
from .virtualbox_error import VirtualBoxError
|
from .virtualbox_error import VirtualBoxError
|
||||||
from ..nios.nio_udp import NIOUDP
|
from ..nios.nio_udp import NIOUDP
|
||||||
from ..nios.nio_nat import NIONAT
|
from ..nios.nio_nat import NIONAT
|
||||||
@ -219,7 +219,11 @@ class VirtualBoxVM(BaseVM):
|
|||||||
|
|
||||||
if self._enable_remote_console and self._console is not None:
|
if self._enable_remote_console and self._console is not None:
|
||||||
try:
|
try:
|
||||||
yield from wait_for_file_creation(self._get_pipe_name()) # wait for VirtualBox to create the pipe file.
|
# wait for VirtualBox to create the pipe file.
|
||||||
|
if sys.platform.startswith("win"):
|
||||||
|
yield from wait_for_named_pipe_creation(self._get_pipe_name())
|
||||||
|
else:
|
||||||
|
yield from wait_for_file_creation(self._get_pipe_name())
|
||||||
except asyncio.TimeoutError:
|
except asyncio.TimeoutError:
|
||||||
raise VirtualBoxError('Pipe file "{}" for remote console has not been created by VirtualBox'.format(self._get_pipe_name()))
|
raise VirtualBoxError('Pipe file "{}" for remote console has not been created by VirtualBox'.format(self._get_pipe_name()))
|
||||||
self._start_remote_console()
|
self._start_remote_console()
|
||||||
|
@ -27,7 +27,7 @@ import tempfile
|
|||||||
|
|
||||||
from gns3server.utils.telnet_server import TelnetServer
|
from gns3server.utils.telnet_server import TelnetServer
|
||||||
from gns3server.utils.interfaces import get_windows_interfaces
|
from gns3server.utils.interfaces import get_windows_interfaces
|
||||||
from gns3server.utils.asyncio import wait_for_file_creation
|
from gns3server.utils.asyncio import wait_for_file_creation, wait_for_named_pipe_creation
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
from .vmware_error import VMwareError
|
from .vmware_error import VMwareError
|
||||||
from ..nios.nio_udp import NIOUDP
|
from ..nios.nio_udp import NIOUDP
|
||||||
@ -440,7 +440,10 @@ class VMwareVM(BaseVM):
|
|||||||
|
|
||||||
if self._enable_remote_console and self._console is not None:
|
if self._enable_remote_console and self._console is not None:
|
||||||
try:
|
try:
|
||||||
yield from wait_for_file_creation(self._get_pipe_name()) # wait for VMware to create the pipe file.
|
if sys.platform.startswith("win"):
|
||||||
|
yield from wait_for_named_pipe_creation(self._get_pipe_name())
|
||||||
|
else:
|
||||||
|
yield from wait_for_file_creation(self._get_pipe_name()) # wait for VMware to create the pipe file.
|
||||||
except asyncio.TimeoutError:
|
except asyncio.TimeoutError:
|
||||||
raise VMwareError('Pipe file "{}" for remote console has not been created by VMware'.format(self._get_pipe_name()))
|
raise VMwareError('Pipe file "{}" for remote console has not been created by VMware'.format(self._get_pipe_name()))
|
||||||
self._start_remote_console()
|
self._start_remote_console()
|
||||||
|
@ -108,3 +108,18 @@ def wait_for_file_creation(path, timeout=10):
|
|||||||
yield from asyncio.sleep(0.5)
|
yield from asyncio.sleep(0.5)
|
||||||
timeout -= 0.5
|
timeout -= 0.5
|
||||||
raise asyncio.TimeoutError()
|
raise asyncio.TimeoutError()
|
||||||
|
|
||||||
|
|
||||||
|
@asyncio.coroutine
|
||||||
|
def wait_for_named_pipe_creation(pipe_path, timeout=10):
|
||||||
|
|
||||||
|
while timeout > 0:
|
||||||
|
try:
|
||||||
|
with open(pipe_path, "a+b"):
|
||||||
|
pass
|
||||||
|
except OSError:
|
||||||
|
yield from asyncio.sleep(0.5)
|
||||||
|
timeout -= 0.5
|
||||||
|
else:
|
||||||
|
return
|
||||||
|
raise asyncio.TimeoutError()
|
||||||
|
Loading…
Reference in New Issue
Block a user