From c8ca3c64482b5657325b5730844799db3cced31b Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Wed, 20 Jul 2011 23:53:39 +0200 Subject: [PATCH] [molecule] image_plugin: fix chroot copy to mounted image file --- molecule/specs/plugins/image_plugin.py | 33 +++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/molecule/specs/plugins/image_plugin.py b/molecule/specs/plugins/image_plugin.py index d572f06..0b1f569 100644 --- a/molecule/specs/plugins/image_plugin.py +++ b/molecule/specs/plugins/image_plugin.py @@ -330,7 +330,7 @@ class ImageHandler(GenericExecutionStep, BuiltinHandlerMixin): return 0 -class IsoUnpackHandler(RemasterIsoUnpackHandler): +class ImageIsoUnpackHandler(RemasterIsoUnpackHandler): def setup(self): @@ -348,6 +348,33 @@ class IsoUnpackHandler(RemasterIsoUnpackHandler): return 0 + def run(self): + + self._output.output("[%s|%s] %s: %s => %s" % ( + blue("ImageIsoUnpackHandler"), darkred(self.spec_name), + _("iso unpacker running"), self.tmp_squash_mount, + self.metadata['chroot_unpack_path'], + ) + ) + + def dorm(): + if self.metadata['chroot_tmp_dir'] is not None: + shutil.rmtree(self.metadata['chroot_tmp_dir'], True) + + # copy data into chroot, in our case, destination dir already + # exists, so copy_dir() is a bit tricky + try: + rc = molecule.utils.copy_dir_existing_dest(self.tmp_squash_mount, + self.metadata['chroot_unpack_path']) + except: + dorm() + raise + + if rc != 0: + dorm() + + return rc + def kill(self, success = True): # ImageHandler sets this if not success: @@ -361,7 +388,7 @@ class IsoUnpackHandler(RemasterIsoUnpackHandler): shutil.rmtree(tmp_dir, True) except (shutil.Error, OSError,): self._output.output("[%s|%s] %s: %s" % ( - blue("IsoUnpackHandler"), darkred(self.spec_name), + blue("ImageIsoUnpackHandler"), darkred(self.spec_name), _("unable to remove temp. dir"), tmp_dir, ) ) @@ -642,5 +669,5 @@ class IsoToImageSpec(GenericSpec): } def get_execution_steps(self): - return [ImageHandler, IsoUnpackHandler, ChrootHandler, + return [ImageHandler, ImageIsoUnpackHandler, ChrootHandler, FinalImageHandler]