refactor try except statement in baseimager
authorGui Chen <gui.chen@intel.com>
Mon, 21 Jan 2013 08:46:28 +0000 (16:46 +0800)
committerGui Chen <gui.chen@intel.com>
Mon, 21 Jan 2013 17:38:02 +0000 (01:38 +0800)
it's risky to handle the assignment in finally loop,
actually it will only cleanup pkg_manager, try to
refactor it here

Change-Id: Icae4108ce4df353389f4a92f7f2be603434a00ed
Signed-off-by: Gui Chen <gui.chen@intel.com>
mic/imager/baseimager.py

index 2309471..05a6fb2 100644 (file)
@@ -920,30 +920,32 @@ class BaseImageCreator(object):
             rpm.addMacro("_install_langs", kickstart.inst_langs(self.ks))
 
         try:
-            try:
-                self.__preinstall_packages(pkg_manager)
-                self.__select_packages(pkg_manager)
-                self.__select_groups(pkg_manager)
-                self.__deselect_packages(pkg_manager)
-                self.__localinst_packages(pkg_manager)
-
-                BOOT_SAFEGUARD = 256L * 1024 * 1024 # 256M
-                checksize = self._root_fs_avail
-                if checksize:
-                    checksize -= BOOT_SAFEGUARD
-                if self.target_arch:
-                    pkg_manager._add_prob_flags(rpm.RPMPROB_FILTER_IGNOREARCH)
-                pkg_manager.runInstall(checksize)
-            except CreatorError, e:
-                raise
+            self.__preinstall_packages(pkg_manager)
+            self.__select_packages(pkg_manager)
+            self.__select_groups(pkg_manager)
+            self.__deselect_packages(pkg_manager)
+            self.__localinst_packages(pkg_manager)
+
+            BOOT_SAFEGUARD = 256L * 1024 * 1024 # 256M
+            checksize = self._root_fs_avail
+            if checksize:
+                checksize -= BOOT_SAFEGUARD
+            if self.target_arch:
+                pkg_manager._add_prob_flags(rpm.RPMPROB_FILTER_IGNOREARCH)
+            pkg_manager.runInstall(checksize)
+        except CreatorError, e:
+            raise
+        except  KeyboardInterrupt:
+            raise
         finally:
-            self._pkgs_content = pkg_manager.getAllContent()
-            self._pkgs_license = pkg_manager.getPkgsLicense()
-            self._pkgs_vcsinfo = pkg_manager.getVcsInfo()
-            self.__attachment_packages(pkg_manager)
-
             pkg_manager.close()
 
+        self._pkgs_content = pkg_manager.getAllContent()
+        self._pkgs_license = pkg_manager.getPkgsLicense()
+        self._pkgs_vcsinfo = pkg_manager.getVcsInfo()
+        self.__attachment_packages(pkg_manager)
+
+
         # hook post install
         self.postinstall()