[molecule.specs.plugins.tar_plugin] add "pre_tar_script" and "post_tar_script" parameters support (see example)

This commit is contained in:
Fabio Erculiani
2010-07-23 11:11:56 +02:00
parent 9bae550d92
commit e4601724cc
+54 -1
View File
@@ -17,7 +17,6 @@
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
import os
import tempfile
import shutil
from molecule.i18n import _
@@ -62,6 +61,29 @@ class TarHandler(GenericExecutionStep, BuiltinHandlerMixin):
)
)
# run pre tar script
exec_script = self.metadata.get('pre_tar_script')
if exec_script:
os.environ['CHROOT_DIR'] = self.chroot_path
os.environ['TAR_PATH'] = self.dest_path
os.environ['TAR_CHECKSUM_PATH'] = self.dest_path + \
TarHandler.MD5_EXT
self._output.output("[%s|%s] %s: %s" % (
blue("TarHandler"), darkred(self.spec_name),
_("spawning"), exec_script,
)
)
rc = molecule.utils.exec_cmd(exec_script)
if rc != 0:
self._output.output("[%s|%s] %s: %s" % (
blue("TarHandler"), darkred(self.spec_name),
_("pre tar hook failed"), rc,
)
)
return rc
return 0
def run(self):
self._output.output("[%s|%s] %s => %s" % (
blue("TarHandler"), darkred(self.spec_name),
@@ -109,6 +131,29 @@ class TarHandler(GenericExecutionStep, BuiltinHandlerMixin):
)
)
# run post tar script
exec_script = self.metadata.get('post_tar_script')
if exec_script:
os.environ['CHROOT_DIR'] = self.chroot_path
os.environ['TAR_PATH'] = self.dest_path
os.environ['TAR_CHECKSUM_PATH'] = self.dest_path + \
TarHandler.MD5_EXT
self._output.output("[%s|%s] %s: %s" % (
blue("TarHandler"), darkred(self.spec_name),
_("spawning"), exec_script,
)
)
rc = molecule.utils.exec_cmd(exec_script)
if rc != 0:
self._output.output("[%s|%s] %s: %s" % (
blue("TarHandler"), darkred(self.spec_name),
_("post tar hook failed"), rc,
)
)
return rc
return 0
def kill(self, success = True):
if not success:
self._run_error_script(None, self.chroot_path, None)
@@ -193,6 +238,14 @@ class IsoToTarSpec(GenericSpec):
'cb': self.valid_dir,
've': self.ve_string_stripper,
},
'pre_tar_script': {
'cb': self.valid_exec_first_list_item,
've': self.ve_string_splitter,
},
'post_tar_script': {
'cb': self.valid_exec_first_list_item,
've': self.ve_string_splitter,
},
'iso_mounter': {
'cb': self.ne_list,
've': self.ve_string_splitter,