[specs/mmc] add source chroot script hooks support

This commit is contained in:
Fabio Erculiani
2011-12-29 08:36:46 +01:00
parent 4473f5a25b
commit d3bfcead18
2 changed files with 114 additions and 2 deletions
+113 -1
View File
@@ -27,6 +27,102 @@ from molecule.specs.plugins.builtin_plugin import BuiltinHandlerMixin
import molecule.utils
class ChrootHandler(GenericExecutionStep, BuiltinHandlerMixin):
def __init__(self, *args, **kwargs):
GenericExecutionStep.__init__(self, *args, **kwargs)
self.source_dir = None
def setup(self):
self.source_dir = self.metadata['source_chroot']
return 0
def pre_run(self):
self._output.output("[%s|%s] %s" % (
blue("ChrootHandler"), darkred(self.spec_name),
_("executing pre_run"),
)
)
# run outer chroot script
exec_script = self.metadata.get('outer_source_chroot_script')
if exec_script:
env = os.environ.copy()
env['CHROOT_DIR'] = self.source_dir
self._output.output("[%s|%s] %s: %s" % (
blue("ChrootHandler"), darkred(self.spec_name),
_("spawning"), " ".join(exec_script),
)
)
rc = molecule.utils.exec_cmd(exec_script, env = env)
if rc != 0:
self._output.output("[%s|%s] %s: %s" % (
blue("ChrootHandler"), darkred(self.spec_name),
_("outer chroot hook failed"), rc,
)
)
return rc
return 0
def post_run(self):
self._output.output("[%s|%s] %s" % (
blue("ChrootHandler"), darkred(self.spec_name),
_("executing post_run"),
)
)
# run outer chroot script after
exec_script = self.metadata.get('outer_source_chroot_script_after')
if exec_script:
env = os.environ.copy()
env['CHROOT_DIR'] = self.source_dir
self._output.output("[%s|%s] %s: %s" % (
blue("ChrootHandler"), darkred(self.spec_name),
_("spawning"), " ".join(exec_script),
)
)
rc = molecule.utils.exec_cmd(exec_script, env = env)
if rc != 0:
self._output.output("[%s|%s] %s: %s" % (
blue("ChrootHandler"), darkred(self.spec_name),
_("outer chroot hook (after inner) failed"), rc,
)
)
return rc
return 0
def kill(self, success = True):
""" Nothing to do """
return 0
def run(self):
self._output.output("[%s|%s] %s" % (
blue("ChrootHandler"), darkred(self.spec_name),
_("hooks running"),
)
)
# run inner chroot script
exec_script = self.metadata.get('inner_source_chroot_script')
if exec_script:
if os.path.isfile(exec_script[0]) and \
os.access(exec_script[0], os.R_OK):
rc = self._exec_inner_script(exec_script, self.source_dir)
if rc != 0:
return rc
self._output.output("[%s|%s] %s" % (
blue("ChrootHandler"), darkred(self.spec_name),
_("hooks completed succesfully"),
)
)
return 0
class ImageHandler(GenericExecutionStep, BuiltinHandlerMixin):
LOSETUP_EXEC = "/sbin/losetup"
@@ -276,6 +372,22 @@ class ChrootToMmcImageSpec(GenericSpec):
'cb': self.ne_string,
've': self.ve_string_stripper,
},
'prechroot': {
'cb': self.valid_exec_first_list_item,
've': self.ve_command_splitter,
},
'outer_source_chroot_script': {
'cb': self.valid_exec_first_list_item,
've': self.ve_command_splitter,
},
'inner_source_chroot_script': {
'cb': self.valid_path_string_first_list_item,
've': self.ve_command_splitter,
},
'outer_source_chroot_script_after': {
'cb': self.valid_exec_first_list_item,
've': self.ve_command_splitter,
},
'release_string': {
'cb': self.ne_string, # validation callback
've': self.ve_string_stripper, # value extractor
@@ -339,4 +451,4 @@ class ChrootToMmcImageSpec(GenericSpec):
}
def get_execution_steps(self):
return [ImageHandler, FinalImageHandler]
return [ChrootHandler, ImageHandler, FinalImageHandler]
+1 -1
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-12-28 17:12+0100\n"
"POT-Creation-Date: 2011-12-29 08:32+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"