prevent tracebacks in tempfile code/initial manifest from stdin

Signed-off-by: Nico Schottelius <nico@brief.schottelius.org>
This commit is contained in:
Nico Schottelius 2012-03-07 13:01:11 +01:00
parent 58a88ca5bd
commit 5001e9cbe7
2 changed files with 18 additions and 13 deletions

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# 2010-2011 Nico Schottelius (nico-cdist at schottelius.org) # 2010-2012 Nico Schottelius (nico-cdist at schottelius.org)
# #
# This file is part of cdist. # This file is part of cdist.
# #
@ -91,13 +91,13 @@ def commandline():
logging.root.setLevel(logging.DEBUG) logging.root.setLevel(logging.DEBUG)
log.debug(args) log.debug(args)
return args.func(args) args.func(args)
def config(args): def config(args):
return configinstall(args, mode=cdist.config.Config) configinstall(args, mode=cdist.config.Config)
def install(args): def install(args):
return configinstall(args, mode=cdist.install.Install) configinstall(args, mode=cdist.install.Install)
def configinstall(args, mode): def configinstall(args, mode):
"""Configure or install remote system""" """Configure or install remote system"""
@ -108,9 +108,13 @@ def configinstall(args, mode):
if args.manifest == '-': if args.manifest == '-':
# read initial manifest from stdin # read initial manifest from stdin
import tempfile import tempfile
handle, initial_manifest_temp_path = tempfile.mkstemp(prefix='cdist.stdin.') try:
with os.fdopen(handle, 'w') as fd: handle, initial_manifest_temp_path = tempfile.mkstemp(prefix='cdist.stdin.')
fd.write(sys.stdin.read()) with os.fdopen(handle, 'w') as fd:
fd.write(sys.stdin.read())
except (IOError, OSError) as e:
raise cdist.Error("Creating tempfile for stdin data failed: %s" % e)
args.manifest = initial_manifest_temp_path args.manifest = initial_manifest_temp_path
import atexit import atexit
atexit.register(lambda: os.remove(initial_manifest_temp_path)) atexit.register(lambda: os.remove(initial_manifest_temp_path))
@ -139,12 +143,15 @@ def configinstall(args, mode):
if len(failed_hosts) > 0: if len(failed_hosts) > 0:
log.warn("Failed to deploy to the following hosts: " + log.warn("Failed to deploy to the following hosts: " +
" ".join(failed_hosts)) " ".join(failed_hosts))
exit_code = 1
time_end = time.time() time_end = time.time()
log.info("Total processing time for %s host(s): %s", len(args.host), log.info("Total processing time for %s host(s): %s", len(args.host),
(time_end - time_start)) (time_end - time_start))
if len(failed_hosts) > 0:
return False
else:
return True
def configinstall_onehost(host, args, mode, parallel): def configinstall_onehost(host, args, mode, parallel):
"""Configure or install ONE remote system""" """Configure or install ONE remote system"""
@ -212,9 +219,9 @@ if __name__ == "__main__":
logging.basicConfig(format='%(levelname)s: %(message)s') logging.basicConfig(format='%(levelname)s: %(message)s')
if re.match("__", os.path.basename(sys.argv[0])): if re.match("__", os.path.basename(sys.argv[0])):
run = emulator() emulator()
else: else:
run = commandline() commandline()
except KeyboardInterrupt: except KeyboardInterrupt:
pass pass
@ -224,7 +231,5 @@ if __name__ == "__main__":
exit_code = 1 exit_code = 1
# Determine exit code by return value of function # Determine exit code by return value of function
if not run:
exit_code = 1
sys.exit(exit_code) sys.exit(exit_code)

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# 2011 Nico Schottelius (nico-cdist at schottelius.org) # 2011-2012 Nico Schottelius (nico-cdist at schottelius.org)
# #
# This file is part of cdist. # This file is part of cdist.
# #