From e0307445f821a5aef4d3900108358915741912b5 Mon Sep 17 00:00:00 2001 From: Timothy Appnel Date: Thu, 23 May 2013 17:27:07 -0400 Subject: [PATCH] Modified assemble module so the dest file is streamed together rather than built-in memory before writing. --- files/assemble | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/files/assemble b/files/assemble index 5819352dd28..6461f138fd8 100644 --- a/files/assemble +++ b/files/assemble @@ -67,22 +67,18 @@ author: Stephen Fromm ''' # =========================================== -# Support methods +# Support method -def assemble_from_fragments(path): +def assemble_from_fragments(src_path): ''' assemble a file from a directory of fragments ''' - assembled = [] - for f in sorted(os.listdir(path)): - fragment = "%s/%s" % (path, f) + tmpfd, temp_path = tempfile.mkstemp() + tmp = os.fdopen(tmpfd,'w') + for f in sorted(os.listdir(src_path)): + fragment = "%s/%s" % (src_path, f) if os.path.isfile(fragment): - assembled.append(file(fragment).read()) - return "".join(assembled) - -def write_temp_file(data): - fd, path = tempfile.mkstemp() - os.write(fd, data) - os.close(fd) - return path + tmp.write(file(fragment).read()) + tmp.close() + return temp_path # ============================================================== # main @@ -112,7 +108,7 @@ def main(): if not os.path.isdir(src): module.fail_json(msg="Source (%s) is not a directory" % src) - path = write_temp_file(assemble_from_fragments(src)) + path = assemble_from_fragments(src) pathmd5 = module.md5(path) if os.path.exists(dest):