Fix a bug in windows shrink sysprep
authorNikos Skalkotos <skalkoto@grnet.gr>
Thu, 25 Jul 2013 10:20:47 +0000 (13:20 +0300)
committerNikos Skalkotos <skalkoto@grnet.gr>
Tue, 30 Jul 2013 13:43:59 +0000 (16:43 +0300)
Make sure winexe returns error if a diskpart command fails

image_creator/os_type/windows.py

index 3b2ac39..5fcfe82 100644 (file)
@@ -217,13 +217,13 @@ class Windows(OSBase):
 
         # Query for the maximum number of reclaimable bytes
         cmd = (
 
         # 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'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)
             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.warn("Not enought available space to shrink the image!")
             return
 
+        self.out.output("\tReclaiming %dMB ..." % querymax)
+
         cmd = (
         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'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)
             r'DEL /Q %SCRIPT%"')
 
         stdout, stderr, rc = self._guest_exec(cmd)