|
|
|
|
@ -26,6 +26,27 @@ class ActionModule(ActionBase):
|
|
|
|
|
|
|
|
|
|
TRANSFERS_FILES = True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_checksum(self, tmp, dest, try_directory=False, source=None):
|
|
|
|
|
remote_checksum = self._remote_checksum(tmp, dest)
|
|
|
|
|
|
|
|
|
|
if remote_checksum in ('0', '2', '3', '4'):
|
|
|
|
|
# Note: 1 means the file is not present which is fine; template
|
|
|
|
|
# will create it. 3 means directory was specified instead of file
|
|
|
|
|
if try_directory and remote_checksum == '3' and source:
|
|
|
|
|
base = os.path.basename(source)
|
|
|
|
|
dest = os.path.join(dest, base)
|
|
|
|
|
remote_checksum = self.get_checksum(tmp, dest, try_directory=False)
|
|
|
|
|
if remote_checksum not in ('0', '2', '3', '4'):
|
|
|
|
|
return remote_checksum
|
|
|
|
|
|
|
|
|
|
result = dict(failed=True, msg="failed to checksum remote file."
|
|
|
|
|
" Checksum error code: %s" % remote_checksum)
|
|
|
|
|
return result
|
|
|
|
|
|
|
|
|
|
return remote_checksum
|
|
|
|
|
|
|
|
|
|
def run(self, tmp=None, task_vars=dict()):
|
|
|
|
|
''' handler for template operations '''
|
|
|
|
|
|
|
|
|
|
@ -84,12 +105,11 @@ class ActionModule(ActionBase):
|
|
|
|
|
except Exception, e:
|
|
|
|
|
return dict(failed=True, msg=type(e).__name__ + ": " + str(e))
|
|
|
|
|
|
|
|
|
|
local_checksum = checksum_s(resultant)
|
|
|
|
|
remote_checksum = self._remote_checksum(tmp, dest)
|
|
|
|
|
|
|
|
|
|
if remote_checksum in ('0', '2', '3', '4'):
|
|
|
|
|
# Note: 1 means the file is not present which is fine; template will create it
|
|
|
|
|
return dict(failed=True, msg="failed to checksum remote file. Checksum error code: %s" % remote_checksum)
|
|
|
|
|
local_checksum = utils.checksum_s(resultant)
|
|
|
|
|
remote_checksum = self.get_checksum(tmp, dest, not directory_prepended, source=source)
|
|
|
|
|
if isinstance(remote_checksum, dict):
|
|
|
|
|
# Error from remote_checksum is a dict. Valid return is a str
|
|
|
|
|
return remote_checksum
|
|
|
|
|
|
|
|
|
|
if local_checksum != remote_checksum:
|
|
|
|
|
# if showing diffs, we need to get the remote value
|
|
|
|
|
|