[molecule.specs] add error_script .spec file directive support
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user