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
1 changed files with 26 additions and 21 deletions

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,43 +145,44 @@ def configinstall_onehost(host, args, mode):
"""Configure or install remote system""" """Configure or install remote system"""
process = {} process = {}
import cdist.context try:
import cdist.context
context = cdist.context.Context( context = cdist.context.Context(
target_host=host, target_host=host,
initial_manifest=args.manifest, initial_manifest=args.manifest,
base_path=args.cdist_home, base_path=args.cdist_home,
exec_path=sys.argv[0], exec_path=sys.argv[0],
debug=args.debug) debug=args.debug)
c = mode(context) c = mode(context)
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"""
emulator = cdist.emulator.Emulator(sys.argv) try:
emulator.run() 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__": 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)