catch cdist errors in emulator or config install, not in main, because catching there does not work in multiprocess env

Signed-off-by: Nico Schottelius <nico@kr.ethz.ch>
This commit is contained in:
Nico Schottelius 2011-10-16 00:15:41 +02:00
parent 72687b5aeb
commit 15ae422cb2

View file

@ -40,6 +40,10 @@ TYPE_PREFIX = "__"
def commandline(): def commandline():
"""Parse command line""" """Parse command line"""
import cdist.banner
import cdist.config
import cdist.install
# Construct parser others can reuse # Construct parser others can reuse
parser = {} parser = {}
# Options _all_ parsers have in common # Options _all_ parsers have in common
@ -141,6 +145,7 @@ def configinstall_onehost(host, args, mode):
"""Configure or install remote system""" """Configure or install remote system"""
process = {} process = {}
try:
import cdist.context import cdist.context
context = cdist.context.Context( context = cdist.context.Context(
@ -154,30 +159,30 @@ def configinstall_onehost(host, args, mode):
c.deploy_and_cleanup() c.deploy_and_cleanup()
context.cleanup() context.cleanup()
except cdist.Error as e:
log.error(e)
sys.exit(1)
def emulator(): def emulator():
"""Prepare and run emulator""" """Prepare and run emulator"""
try:
import cdist.emulator
emulator = cdist.emulator.Emulator(sys.argv) emulator = cdist.emulator.Emulator(sys.argv)
emulator.run() emulator.run()
except cdist.Error as e:
log.error(e)
sys.exit(1)
if __name__ == "__main__": if __name__ == "__main__":
try: try:
logging.basicConfig(format='%(levelname)s: %(message)s') logging.basicConfig(format='%(levelname)s: %(message)s')
if re.match(TYPE_PREFIX, os.path.basename(sys.argv[0])): if re.match(TYPE_PREFIX, os.path.basename(sys.argv[0])):
import cdist.emulator
emulator() emulator()
else: else:
import cdist.banner
import cdist.config
import cdist.install
commandline() commandline()
except KeyboardInterrupt: except KeyboardInterrupt:
# FIXME: catch children if in parallel mode # FIXME: catch children if in parallel mode
sys.exit(0) sys.exit(0)
except cdist.Error as e:
log.error(e)
sys.exit(1)