From b38262f858077f8f57781d60e4439ad07b0be0ab Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Mon, 31 Oct 2011 16:07:33 +0100 Subject: [PATCH] implement reading initial manifest from stdin Signed-off-by: Steven Armstrong --- bin/cdist | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/bin/cdist b/bin/cdist index ffda3e42..4d9cd8a2 100755 --- a/bin/cdist +++ b/bin/cdist @@ -60,7 +60,7 @@ def commandline(): help='Change cdist home (default: .. from bin directory)', action='store') parser['configinstall'].add_argument('-i', '--initial-manifest', - help='Path to a cdist manifest', + help='Path to a cdist manifest or \'-\' to read from stdin.', dest='manifest', required=False) parser['configinstall'].add_argument('-p', '--parallel', help='Operate on multiple hosts in parallel', @@ -104,6 +104,17 @@ def configinstall(args, mode): import multiprocessing import time + initial_manifest_tempfile = None + if args.manifest == '-': + # read initial manifest from stdin + import tempfile + handle, initial_manifest_temp_path = tempfile.mkstemp(prefix='cdist.stdin.') + with os.fdopen(handle, 'w') as fd: + fd.write(sys.stdin.read()) + args.manifest = initial_manifest_temp_path + import atexit + atexit.register(lambda: os.remove(initial_manifest_temp_path)) + try: process = {} failed_hosts = []