Skip to content

Commit

Permalink
Fix cannot stop Docker VM while console connection is still active.
Browse files Browse the repository at this point in the history
  • Loading branch information
grossmj committed Apr 4, 2024
1 parent a80aed5 commit 5b1ba5a
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions gns3server/compute/docker/docker_vm.py
Original file line number Diff line number Diff line change
Expand Up @@ -481,6 +481,9 @@ async def start(self):
await self._start_vnc_process(restart=True)
monitor_process(self._vnc_process, self._vnc_callback)

if self._console_websocket:
await self._console_websocket.close()
self._console_websocket = None
await self._clean_servers()

await self.manager.query("POST", "containers/{}/start".format(self._cid))
Expand Down Expand Up @@ -702,9 +705,7 @@ async def drain(self):

self._console_websocket = await self.manager.websocket_query("containers/{}/attach/ws?stream=1&stdin=1&stdout=1&stderr=1".format(self._cid))
input_stream.ws = self._console_websocket

output_stream.feed_data(self.name.encode() + b" console is now available... Press RETURN to get started.\r\n")

asyncio.ensure_future(self._read_console_output(self._console_websocket, output_stream))

async def _read_console_output(self, ws, out):
Expand All @@ -727,13 +728,14 @@ async def _read_console_output(self, ws, out):
out.feed_eof()
await ws.close()
break
await self.stop()

async def reset_console(self):
"""
Reset the console.
"""

if self._console_websocket:
await self._console_websocket.close()
await self._clean_servers()
await self._start_console()

Expand Down Expand Up @@ -778,6 +780,9 @@ async def stop(self):
"""

try:
if self._console_websocket:
await self._console_websocket.close()
self._console_websocket = None
await self._clean_servers()
await self._stop_ubridge()

Expand Down

0 comments on commit 5b1ba5a

Please sign in to comment.