From e59b5fb95be1a666d8637067fe19e416d30b1ece Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 31 May 2023 21:28:06 +0930 Subject: [PATCH 1/3] Remove Xvfb + x11vnc support --- gns3server/compute/docker/docker_vm.py | 31 ++++---------------------- 1 file changed, 4 insertions(+), 27 deletions(-) diff --git a/gns3server/compute/docker/docker_vm.py b/gns3server/compute/docker/docker_vm.py index 79bdb128..62c8dc3f 100644 --- a/gns3server/compute/docker/docker_vm.py +++ b/gns3server/compute/docker/docker_vm.py @@ -585,8 +585,8 @@ class DockerVM(BaseNode): self._display = self._get_free_display_port() tigervnc_path = shutil.which("Xtigervnc") or shutil.which("Xvnc") - if not (tigervnc_path or shutil.which("Xvfb") and shutil.which("x11vnc")): - raise DockerError("Please install TigerVNC (recommended) or Xvfb + x11vnc before using VNC support") + if not tigervnc_path: + raise DockerError("Please install TigerVNC server before using VNC support") if tigervnc_path: with open(os.path.join(self.working_dir, "vnc.log"), "w") as fd: @@ -600,29 +600,6 @@ class DockerVM(BaseNode): "-SecurityTypes", "None", ":{}".format(self._display), stdout=fd, stderr=subprocess.STDOUT) - else: - if restart is False: - self._xvfb_process = await asyncio.create_subprocess_exec("Xvfb", - "-nolisten", "tcp", - "-extension", "MIT-SHM", - ":{}".format(self._display), - "-screen", "0", - self._console_resolution + "x16") - - # We pass a port for TCPV6 due to a crash in X11VNC if not here: https://github.com/GNS3/gns3-server/issues/569 - with open(os.path.join(self.working_dir, "vnc.log"), "w") as fd: - self._vnc_process = await asyncio.create_subprocess_exec("x11vnc", - "-forever", - "-nopw", - "-shared", - "-noshm", - "-geometry", self._console_resolution, - "-display", "WAIT:{}".format(self._display), - "-rfbport", str(self.console), - "-rfbportv6", str(self.console), - "-noncache", - "-listen", self._manager.port_manager.console_host, - stdout=fd, stderr=subprocess.STDOUT) async def _start_vnc(self): """ @@ -631,8 +608,8 @@ class DockerVM(BaseNode): self._display = self._get_free_display_port() tigervnc_path = shutil.which("Xtigervnc") or shutil.which("Xvnc") - if not (tigervnc_path or shutil.which("Xvfb") and shutil.which("x11vnc")): - raise DockerError("Please install TigerVNC server (recommended) or Xvfb + x11vnc before using VNC support") + if not tigervnc_path: + raise DockerError("Please install TigerVNC server before using VNC support") await self._start_vnc_process() x11_socket = os.path.join("/tmp/.X11-unix/", "X{}".format(self._display)) try: From 84c886b058e340d766668141218c1c08328c664c Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 31 May 2023 21:33:39 +0930 Subject: [PATCH 2/3] Remove left over Xvfb related code --- gns3server/compute/docker/docker_vm.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/gns3server/compute/docker/docker_vm.py b/gns3server/compute/docker/docker_vm.py index 62c8dc3f..a10312e3 100644 --- a/gns3server/compute/docker/docker_vm.py +++ b/gns3server/compute/docker/docker_vm.py @@ -85,7 +85,6 @@ class DockerVM(BaseNode): self._ethernet_adapters = [] self._temporary_directory = None self._telnet_servers = [] - self._xvfb_process = None self._vnc_process = None self._vncconfig_process = None self._console_resolution = console_resolution @@ -852,12 +851,6 @@ class DockerVM(BaseNode): await self._vnc_process.wait() except ProcessLookupError: pass - if self._xvfb_process: - try: - self._xvfb_process.terminate() - await self._xvfb_process.wait() - except ProcessLookupError: - pass if self._display: display = "/tmp/.X11-unix/X{}".format(self._display) From 4338afab7fa0fc8022f5636d57902c4fdd7f0c29 Mon Sep 17 00:00:00 2001 From: grossmj Date: Fri, 2 Jun 2023 20:16:06 +0930 Subject: [PATCH 3/3] Fix tests --- tests/compute/docker/test_docker_vm.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/compute/docker/test_docker_vm.py b/tests/compute/docker/test_docker_vm.py index 4d1b2402..9396cc89 100644 --- a/tests/compute/docker/test_docker_vm.py +++ b/tests/compute/docker/test_docker_vm.py @@ -1115,8 +1115,7 @@ async def test_close(vm, port_manager): async def test_close_vnc(vm): vm._console_type = "vnc" - vm._x11vnc_process = MagicMock() - vm._xvfb_process = MagicMock() + vm._vnc_process = MagicMock() with asyncio_patch("gns3server.compute.docker.DockerVM._get_container_state", return_value="stopped"): with asyncio_patch("gns3server.compute.docker.Docker.query") as mock_query: @@ -1124,7 +1123,7 @@ async def test_close_vnc(vm): mock_query.assert_called_with("DELETE", "containers/e90e34656842", params={"force": 1, "v": 1}) assert vm._closed is True - assert vm._xvfb_process.terminate.called + assert vm._vnc_process.terminate.called async def test_get_namespace(vm):