From 62dee290c51e3963e3adcc24780d0cbb04e46c32 Mon Sep 17 00:00:00 2001 From: Michael DeHaan Date: Fri, 24 Feb 2012 05:15:28 -0500 Subject: [PATCH] Implment copy with an actual minion-side module such that we can get md5sum's and onchange events like Puppet's file providers do. --- copy | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/copy b/copy index 38ea7d7cedd..7c94f7260cf 100644 --- a/copy +++ b/copy @@ -1 +1,40 @@ -# copy is built-in to ansible's core, so the module here is just a placeholder +#!/usr/bin/python + +import sys +import os + +try: + import json +except ImportError: + import simplejson as json + +source = sys.argv[1] +dest = sys.argv[2] + +# raise an error if there is no source file +if not os.path.exists(source): + print json.dumps({ + "failed" : 1, + "msg" : "Source %s failed to transfer" % source + }) + sys.exit(1) + +md5sum = None +changed = False +if os.path.exists(dest): + md5sum = os.popen("md5sum %s" % dest).read() + +os.system("cp %s %s" % (source, dest)) + +md5sum2 = os.popen("md5sum %s" % dest).read() + +if md5sum != md5sum2: + changed = True + +# mission accomplished +print json.dumps({ + "md5sum" : md5sum2, + "changed" : changed +}) + +