forked from ungleich-public/cdist
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:
parent
72687b5aeb
commit
15ae422cb2
1 changed files with 26 additions and 21 deletions
47
bin/cdist
47
bin/cdist
|
@ -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)
|
|
||||||
|
|
Loading…
Reference in a new issue