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