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
23
bin/cdist
23
bin/cdist
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue