From 23c82433ad39454d2a420b1a2dac7fbe55a3ea0b Mon Sep 17 00:00:00 2001 From: Nikos Skalkotos Date: Thu, 25 Jul 2013 13:20:47 +0300 Subject: [PATCH] Fix a bug in windows shrink sysprep Make sure winexe returns error if a diskpart command fails --- image_creator/os_type/windows.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/image_creator/os_type/windows.py b/image_creator/os_type/windows.py index 3b2ac39..5fcfe82 100644 --- a/image_creator/os_type/windows.py +++ b/image_creator/os_type/windows.py @@ -217,13 +217,13 @@ class Windows(OSBase): # Query for the maximum number of reclaimable bytes cmd = ( - r'cmd /Q /C "SET SCRIPT=%TEMP%\QUERYMAX_%RANDOM%.TXT & ' + + r'cmd /Q /V:ON /C "SET SCRIPT=%TEMP%\QUERYMAX_%RANDOM%.TXT & ' + r'ECHO SELECT DISK 0 > %SCRIPT% & ' + 'ECHO SELECT PARTITION %d >> %%SCRIPT%% & ' % self.last_part_num + r'ECHO SHRINK QUERYMAX >> %SCRIPT% & ' + r'ECHO EXIT >> %SCRIPT% & ' + r'DISKPART /S %SCRIPT% & ' + - r'IF ERRORLEVEL 1 EXIT /B 1 & ' + + r'IF NOT !ERRORLEVEL! EQU 0 EXIT /B 1 & ' + r'DEL /Q %SCRIPT%"') stdout, stderr, rc = self._guest_exec(cmd) @@ -255,14 +255,16 @@ class Windows(OSBase): self.out.warn("Not enought available space to shrink the image!") return + self.out.output("\tReclaiming %dMB ..." % querymax) + cmd = ( - r'cmd /Q /C "SET SCRIPT=%TEMP%\QUERYMAX_%RANDOM%.TXT & ' + + r'cmd /Q /V:ON /C "SET SCRIPT=%TEMP%\QUERYMAX_%RANDOM%.TXT & ' + r'ECHO SELECT DISK 0 > %SCRIPT% & ' + 'ECHO SELECT PARTITION %d >> %%SCRIPT%% & ' % self.last_part_num + 'ECHO SHRINK DESIRED=%d >> %%SCRIPT%% & ' % querymax + r'ECHO EXIT >> %SCRIPT% & ' + r'DISKPART /S %SCRIPT% & ' + - r'IF ERRORLEVEL 1 EXIT /B 1 & ' + + r'IF NOT !ERRORLEVEL! EQU 0 EXIT /B 1 & ' + r'DEL /Q %SCRIPT%"') stdout, stderr, rc = self._guest_exec(cmd) -- 1.7.10.4