Commit e6b76a59 by Fred Alger

Make shell outs to md5sum work on FreeBSD and OS X

Tested with OS X local connection and Linux remote. The paths to the
md5sum and md5 commands are hardcoded to the most common location. This
will definitely fail if the commands are elsewhere, or if the md5
command doesn't support the -q 'quiet' option.
parent 0fb59f0b
...@@ -476,8 +476,8 @@ class Runner(object): ...@@ -476,8 +476,8 @@ class Runner(object):
# compare old and new md5 for support of change hooks # compare old and new md5 for support of change hooks
local_md5 = None local_md5 = None
if os.path.exists(dest): if os.path.exists(dest):
local_md5 = os.popen("md5sum %s" % dest).read().split()[0] local_md5 = os.popen("/usr/bin/md5sum %(file)s 2> /dev/null || /sbin/md5 -q %(file)s" % {"file": dest}).read().split()[0]
remote_md5 = self._low_level_exec_command(conn, "md5sum %s" % source, tmp, True).split()[0] remote_md5 = self._low_level_exec_command(conn, "/usr/bin/md5sum %(file)s 2> /dev/null || /sbin/md5 -q %(file)s" % {"file": source}, tmp, True).split()[0]
if remote_md5 != local_md5: if remote_md5 != local_md5:
# create the containing directories, if needed # create the containing directories, if needed
...@@ -486,7 +486,7 @@ class Runner(object): ...@@ -486,7 +486,7 @@ class Runner(object):
# fetch the file and check for changes # fetch the file and check for changes
conn.fetch_file(source, dest) conn.fetch_file(source, dest)
new_md5 = os.popen("md5sum %s" % dest).read().split()[0] new_md5 = os.popen("/usr/bin/md5sum %(file)s 2> /dev/null || /sbin/md5 -q %(file)s" % {"file": dest}).read().split()[0]
if new_md5 != remote_md5: if new_md5 != remote_md5:
result = dict(failed=True, msg="md5 mismatch", md5sum=new_md5) result = dict(failed=True, msg="md5 mismatch", md5sum=new_md5)
return ReturnData(host=conn.host, result=result) return ReturnData(host=conn.host, result=result)
......
...@@ -60,9 +60,9 @@ if not os.path.exists(src): ...@@ -60,9 +60,9 @@ if not os.path.exists(src):
md5sum = None md5sum = None
changed = False changed = False
if os.path.exists(dest): if os.path.exists(dest):
md5sum = os.popen("md5sum %s" % dest).read().split()[0] md5sum = os.popen("/usr/bin/md5sum %(file)s 2> /dev/null || /sbin/md5 -q %(file)s" % {"file": dest}).read().split()[0]
md5sum2 = os.popen("md5sum %s" % src).read().split()[0] md5sum2 = os.popen("/usr/bin/md5sum %(file)s 2> /dev/null || /sbin/md5 -q %(file)s" % {"file": src}).read().split()[0]
if md5sum != md5sum2: if md5sum != md5sum2:
os.system("cp %s %s" % (src, dest)) os.system("cp %s %s" % (src, dest))
......
...@@ -345,7 +345,7 @@ md5sum = None ...@@ -345,7 +345,7 @@ md5sum = None
if not os.path.exists(ansible_file): if not os.path.exists(ansible_file):
changed = True changed = True
else: else:
md5sum = os.popen("md5sum %s" % ansible_file).read().split()[0] md5sum = os.popen("/usr/bin/md5sum %(file)s 2> /dev/null || /sbin/md5 -q %(file)s" % {"file": ansible_file}).read().split()[0]
# Get some basic facts in case facter or ohai are not installed # Get some basic facts in case facter or ohai are not installed
for (k, v) in ansible_facts().items(): for (k, v) in ansible_facts().items():
...@@ -394,7 +394,7 @@ reformat = json.dumps(setup_options, sort_keys=True, indent=4) ...@@ -394,7 +394,7 @@ reformat = json.dumps(setup_options, sort_keys=True, indent=4)
f.write(reformat) f.write(reformat)
f.close() f.close()
md5sum2 = os.popen("md5sum %s" % ansible_file).read().split()[0] md5sum2 = os.popen("/usr/bin/md5sum %(file)s 2> /dev/null || /sbin/md5 -q %(file)s" % {"file": ansible_file}).read().split()[0]
if md5sum != md5sum2: if md5sum != md5sum2:
changed = True changed = True
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment