in fork() do sys.exit() so parent knows about failures
Signed-off-by: Nico Schottelius <nico@brief.schottelius.org>
This commit is contained in:
parent
d3b9aa6769
commit
531ad2966f
1 changed files with 19 additions and 19 deletions
32
bin/cdist
32
bin/cdist
|
@ -177,28 +177,25 @@ def configinstall_onehost(host, args, mode, parallel):
|
||||||
context.cleanup()
|
context.cleanup()
|
||||||
|
|
||||||
except cdist.Error as e:
|
except cdist.Error as e:
|
||||||
|
if parallel:
|
||||||
log.error(e)
|
log.error(e)
|
||||||
return False
|
sys.exit(1)
|
||||||
except KeyboardInterrupt:
|
|
||||||
# Do not care in sequential mode, catch in parallel mode
|
|
||||||
if not parallel:
|
|
||||||
raise
|
|
||||||
else:
|
else:
|
||||||
# Catch here, above does not need to know about our errors
|
raise
|
||||||
return False
|
|
||||||
|
|
||||||
return True
|
except KeyboardInterrupt:
|
||||||
|
# Ignore in parallel mode, we are existing anyway
|
||||||
|
if parallel:
|
||||||
|
sys.exit(0)
|
||||||
|
# Pass back to controlling code in sequential mode
|
||||||
|
else:
|
||||||
|
raise
|
||||||
|
|
||||||
def emulator():
|
def emulator():
|
||||||
"""Prepare and run emulator"""
|
"""Prepare and run emulator"""
|
||||||
try:
|
|
||||||
import cdist.emulator
|
import cdist.emulator
|
||||||
emulator = cdist.emulator.Emulator(sys.argv)
|
emulator = cdist.emulator.Emulator(sys.argv)
|
||||||
emulator.run()
|
return emulator.run()
|
||||||
|
|
||||||
except cdist.Error as e:
|
|
||||||
log.error(e)
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
# Sys is needed for sys.exit()
|
# Sys is needed for sys.exit()
|
||||||
|
@ -213,9 +210,8 @@ if __name__ == "__main__":
|
||||||
|
|
||||||
cdistpythonversion = '3.2'
|
cdistpythonversion = '3.2'
|
||||||
if sys.version < cdistpythonversion:
|
if sys.version < cdistpythonversion:
|
||||||
print('Cdist requires Python >= ' + cdistpythonversion +
|
raise cdist.Error('Cdist requires Python >= ' + cdistpythonversion +
|
||||||
' on the source host.')
|
' on the source host.')
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
# Ensure our /lib/ is included into PYTHON_PATH
|
# Ensure our /lib/ is included into PYTHON_PATH
|
||||||
sys.path.insert(0, os.path.abspath(
|
sys.path.insert(0, os.path.abspath(
|
||||||
|
@ -236,6 +232,10 @@ if __name__ == "__main__":
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
except cdist.Error as e:
|
||||||
|
log.error(e)
|
||||||
|
exit_code = 1
|
||||||
|
|
||||||
# Determine exit code by return value of function
|
# Determine exit code by return value of function
|
||||||
if not run:
|
if not run:
|
||||||
exit_code = 1
|
exit_code = 1
|
||||||
|
|
Loading…
Reference in a new issue