[molecule.specs] add error_script .spec file directive support

This commit is contained in:
Fabio Erculiani
2009-12-21 21:55:48 +01:00
parent b7cfd0d088
commit f005d55e31
3 changed files with 128 additions and 0 deletions
+82
View File
@@ -55,7 +55,26 @@ class MirrorHandler(GenericExecutionStep):
)
return 0
def _run_error_script(self):
error_script = self.metadata.get('error_script')
if error_script:
os.environ['SOURCE_CHROOT_DIR'] = self.source_dir
os.environ['CHROOT_DIR'] = self.dest_dir
self.Output.updateProgress("[%s|%s] %s: %s" % (
blue("MirrorHandler"),darkred(self.spec_name),
_("spawning"), [error_script],
)
)
molecule.utils.exec_cmd([error_script])
for env_key in ("SOURCE_CHROOT_DIR", "CHROOT_DIR", "CDROOT_DIR",):
try:
del os.environ[env_key]
except KeyError:
continue
def kill(self, success = True):
if not success:
self._run_error_script()
self.Output.updateProgress("[%s|%s] %s" % (
blue("MirrorHandler"),darkred(self.spec_name),
_("executing kill"),
@@ -232,7 +251,26 @@ class ChrootHandler(GenericExecutionStep):
return 0
def _run_error_script(self):
error_script = self.metadata.get('error_script')
if error_script:
os.environ['SOURCE_CHROOT_DIR'] = self.source_dir
os.environ['CHROOT_DIR'] = self.dest_dir
self.Output.updateProgress("[%s|%s] %s: %s" % (
blue("MirrorHandler"),darkred(self.spec_name),
_("spawning"), [error_script],
)
)
molecule.utils.exec_cmd([error_script])
for env_key in ("SOURCE_CHROOT_DIR", "CHROOT_DIR", "CDROOT_DIR",):
try:
del os.environ[env_key]
except KeyError:
continue
def kill(self, success = True):
if not success:
self._run_error_script()
self.Output.updateProgress("[%s|%s] %s" % (
blue("ChrootHandler"),
darkred(self.spec_name),_("executing kill"),
@@ -334,7 +372,27 @@ class CdrootHandler(GenericExecutionStep):
)
return 0
def _run_error_script(self):
error_script = self.metadata.get('error_script')
if error_script:
os.environ['SOURCE_CHROOT_DIR'] = self.metadata['source_chroot']
os.environ['CHROOT_DIR'] = self.source_chroot
os.environ['CDROOT_DIR'] = self.dest_root
self.Output.updateProgress("[%s|%s] %s: %s" % (
blue("CdrootHandler"),darkred(self.spec_name),
_("spawning"), [error_script],
)
)
molecule.utils.exec_cmd([error_script])
for env_key in ("SOURCE_CHROOT_DIR", "CHROOT_DIR", "CDROOT_DIR",):
try:
del os.environ[env_key]
except KeyError:
continue
def kill(self, success = True):
if not success:
self._run_error_script()
self.Output.updateProgress("[%s|%s] %s" % (
blue("CdrootHandler"),darkred(self.spec_name),
_("executing kill"),
@@ -457,7 +515,27 @@ class IsoHandler(GenericExecutionStep):
)
return 0
def _run_error_script(self):
error_script = self.metadata.get('error_script')
if error_script:
os.environ['SOURCE_CHROOT_DIR'] = self.source_chroot
os.environ['CHROOT_DIR'] = self.chroot_dir
os.environ['CDROOT_DIR'] = self.source_path
self.Output.updateProgress("[%s|%s] %s: %s" % (
blue("IsoHandler"),darkred(self.spec_name),
_("spawning"), [error_script],
)
)
molecule.utils.exec_cmd([error_script])
for env_key in ("SOURCE_CHROOT_DIR", "CHROOT_DIR", "CDROOT_DIR",):
try:
del os.environ[env_key]
except KeyError:
continue
def kill(self, success = True):
if not success:
self._run_error_script()
self.Output.updateProgress("[%s|%s] %s" % (
blue("IsoHandler"),darkred(self.spec_name),
_("executing kill"),
@@ -583,6 +661,10 @@ class LivecdSpec(GenericSpec):
'cb': self.valid_dir,
've': self.ve_string_stripper,
},
'error_script': {
'cb': self.valid_exec,
've': self.ve_string_stripper,
},
'outer_chroot_script': {
'cb': self.valid_exec,
've': self.ve_string_stripper,
+25
View File
@@ -49,6 +49,7 @@ class IsoUnpackHandler(GenericExecutionStep):
# setup upcoming new chroot path
self.dest_root = os.path.join(unpack_prefix, "cdroot")
self.chroot_dir = self.metadata['chroot_unpack_path']
self.metadata['cdroot_path'] = self.dest_root
def pre_run(self):
@@ -143,6 +144,23 @@ class IsoUnpackHandler(GenericExecutionStep):
)
return 0
def _run_error_script(self):
error_script = self.metadata.get('error_script')
if error_script:
os.environ['CHROOT_DIR'] = self.chroot_dir
os.environ['CDROOT_DIR'] = self.dest_root
self.Output.updateProgress("[%s|%s] %s: %s" % (
blue("IsoUnpackHandler"),darkred(self.spec_name),
_("spawning"), [error_script],
)
)
molecule.utils.exec_cmd([error_script])
for env_key in ("SOURCE_CHROOT_DIR", "CHROOT_DIR", "CDROOT_DIR",):
try:
del os.environ[env_key]
except KeyError:
continue
def kill(self, success = True):
self.Output.updateProgress("[%s|%s] %s" % (
blue("IsoUnpackHandler"),darkred(self.spec_name),
@@ -150,6 +168,9 @@ class IsoUnpackHandler(GenericExecutionStep):
)
)
if not success:
self._run_error_script()
rc = 0
if self.squash_mounted:
umounter = self.metadata.get('squash_umounter',
@@ -324,6 +345,10 @@ class RemasterSpec(GenericSpec):
'cb': self.ne_string,
've': self.ve_string_stripper,
},
'error_script': {
'cb': self.valid_exec,
've': self.ve_string_stripper,
},
'outer_chroot_script': {
'cb': self.valid_exec,
've': self.ve_string_stripper,
+21
View File
@@ -96,8 +96,25 @@ class TarHandler(GenericExecutionStep):
)
)
def _run_error_script(self):
error_script = self.metadata.get('error_script')
if error_script:
os.environ['CHROOT_DIR'] = self.chroot_path
self.Output.updateProgress("[%s|%s] %s: %s" % (
blue("TarHandler"),darkred(self.spec_name),
_("spawning"), [error_script],
)
)
molecule.utils.exec_cmd([error_script])
for env_key in ("SOURCE_CHROOT_DIR", "CHROOT_DIR", "CDROOT_DIR",):
try:
del os.environ[env_key]
except KeyError:
continue
def kill(self, success = True):
if not success:
self._run_error_script()
try:
shutil.rmtree(self.metadata['chroot_tmp_dir'], True)
except (shutil.Error, OSError,):
@@ -137,6 +154,10 @@ class IsoToTarSpec(GenericSpec):
'cb': self.supported_compression_method,
've': self.ve_string_stripper,
},
'error_script': {
'cb': self.valid_exec,
've': self.ve_string_stripper,
},
'outer_chroot_script': {
'cb': self.valid_exec,
've': self.ve_string_stripper,