From 37f678f44653ae05c7badd063636d24ee9c1f818 Mon Sep 17 00:00:00 2001 From: Lucian Petrut Date: Thu, 11 Jun 2026 14:00:14 +0000 Subject: [PATCH] Improve image mount failure handling As shown in the following logs, ISO image mounting can fail silently. We won't get a drive letter, nor a non-zero exit code. However, attemptng to subsequently dismount the image fails. This change will raise an exception if no drive letter was received, including the original stderr as well as the image file size, which can help us determine if an invalid image was received. ``` 2026-06-05 13:39:01.124 DEBUG coriolis.wsman [-] Executing PS command: (Mount-DiskImage 'c:\virtio-win.iso' -PassThru | Get-Volume).DriveLetter from (pid=4517) exec_ps_command /var/log/coriolis/cori olis/coriolis/wsman.py:149 2026-06-05 13:39:08.868 DEBUG coriolis.wsman [-] Executing PS command: Test-Path -Path ":\Balloon\2k25\amd64" from (pid=4517) exec_ps_command /var/log/coriolis/coriolis/coriolis/wsman.py:149 2026-06-05 13:39:11.554 DEBUG coriolis.wsman [-] Executing PS command: Test-Path -Path ":\Balloon\2k22\amd64" from (pid=4517) exec_ps_command /var/log/coriolis/coriolis/coriolis/wsman.py:149 2026-06-05 13:39:14.094 DEBUG coriolis.wsman [-] Executing PS command: Test-Path -Path ":\Balloon\2k19\amd64" from (pid=4517) exec_ps_command /var/log/coriolis/coriolis/coriolis/wsman.py:149 2026-06-05 13:39:16.689 DEBUG coriolis.wsman [-] Executing PS command: Test-Path -Path ":\Balloon\2k16\amd64" from (pid=4517) exec_ps_command /var/log/coriolis/coriolis/coriolis/wsman.py:149 2026-06-05 13:39:19.331 DEBUG coriolis.wsman [-] Executing PS command: Test-Path -Path ":\Balloon\w10\amd64" from (pid=4517) exec_ps_command /var/log/coriolis/coriolis/coriolis/wsman.py:149 2026-06-05 13:39:21.893 DEBUG coriolis.wsman [-] Executing PS command: Test-Path -Path ":\Balloon\2k12R2\amd64" from (pid=4517) exec_ps_command /var/log/coriolis/coriolis/coriolis/wsman.py:149 2026-06-05 13:39:24.450 DEBUG coriolis.wsman [-] Executing PS command: Test-Path -Path ":\Balloon\2k12\amd64" from (pid=4517) exec_ps_command /var/log/coriolis/coriolis/coriolis/wsman.py:149 2026-06-05 13:39:27.054 DEBUG coriolis.wsman [-] Executing PS command: Test-Path -Path ":\Balloon\2k8R2\amd64" from (pid=4517) exec_ps_command /var/log/coriolis/coriolis/coriolis/wsman.py:149 2026-06-05 13:39:29.755 DEBUG coriolis.wsman [-] Executing PS command: Test-Path -Path ":\Balloon\2k8\amd64" from (pid=4517) exec_ps_command /var/log/coriolis/coriolis/coriolis/wsman.py:149 2026-06-05 13:39:32.449 DEBUG coriolis.wsman [-] Executing PS command: Test-Path -Path ":\Balloon\2k3\amd64" from (pid=4517) exec_ps_command /var/log/coriolis/coriolis/coriolis/wsman.py:149 2026-06-05 13:39:35.011 INFO coriolis.osmorphing.windows [-] Unmounting disk image: c:\virtio-win.iso ... 2026-06-05 13:40:04.250 TRACE coriolis.worker.rpc.server self._conn.exec_ps_command("Dismount-DiskImage '%s'" % path, 2026-06-05 13:40:04.250 TRACE coriolis.worker.rpc.server File "/var/log/coriolis/coriolis/coriolis/wsman.py", line 151, in exec_ps_command 2026-06-05 13:40:04.250 TRACE coriolis.worker.rpc.server return self.exec_command( 2026-06-05 13:40:04.250 TRACE coriolis.worker.rpc.server File "/var/log/coriolis/coriolis/coriolis/wsman.py", line 141, in exec_command 2026-06-05 13:40:04.250 TRACE coriolis.worker.rpc.server raise exception.CoriolisException( 2026-06-05 13:40:04.250 TRACE coriolis.worker.rpc.server coriolis.exception.CoriolisException: Command "['powershell.exe', '-EncodedCommand', 'RABpAHMAbQBvAHUAbgB0AC0ARABpAHMAawBJAG0AYQBnAGUAIAAnAGMAOgBcAHYAaQByAHQAaQBvAC0AdwBpAG4ALgBpAHMAbwAnAA==', '-NonInteractive', '-ExecutionPolicy', 'RemoteSigned']" failed with exit code: 1 2026-06-05 13:40:04.250 TRACE coriolis.worker.rpc.server stdout: 2026-06-05 13:40:04.250 TRACE coriolis.worker.rpc.server std_err: #< CLIXML 2026-06-05 13:40:04.250 TRACE coriolis.worker.rpc.server System.Management.Automation.PSCustomObjectSystem.Object1Preparing modules for first use.0-1-1Completed-1 2Preparing modules for first use.0-1-1Completed-1 3Preparing modules for first use.0-1-1Completed-1 Dismount-DiskImage : The request could not be performed because of an I/O device error. _x000D__x000A_At line:1 char:1_x000D__x000A_+ Dismount-DiskImage 'c:\virtio-win.iso'_x000D__x000A_+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~_x000D__x000A_ + CategoryInfo : NotSpecified: (MSFT_DiskImage:ROOT/Microsoft/.../MSFT_DiskImage) [Dismount-DiskImage], C _x000D__x000A_ imException_x000D__x000A_ + FullyQualifiedErrorId : HRESULT 0x8007045d,Dismount-DiskImage_x000D__x000A_ _x000D__x000A_4Dismount-DiskImage 'c:\virtio-win.iso'1393322851-1100Completed01/1 completed