mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-22 12:50:22 -07:00
win_copy: Add force parameter and check-mode support (#20405)
* win_copy: Add force parameter and check-mode support The rationale behind this is that if you're working with +3GB files, creating the checksum takes a lot of time, which we can avoid by simply testing if the file exists. I also took the liberty to put the various parameters together. It probably takes a (neglible) performance hit but makes the code a bit easier to inspect/work with, as its closer to all other windows modules. On a normal run, the action plugin does a local checksum of the source and a remote checksum of the destination. And afterwards, the module will do another remote checksum of the copied source, a remote checksum of the original destination, and another remote checksum of the copied destination. On a very huge file (think 4GB) that means 5x reading the complete file (if you have a large cache you may get away with it, otherwise you're doomed !). This patch will ensure with `force: no` that not checksums are being performed. * Moving presence check before remote checksum * Adapted to wishes * Even more performance improvements
This commit is contained in:
parent
ce08b4165d
commit
98934939af
4 changed files with 63 additions and 61 deletions
|
@ -471,7 +471,7 @@ class ActionBase(with_metaclass(ABCMeta, object)):
|
|||
res = self._low_level_execute_command(cmd, sudoable=sudoable)
|
||||
return res
|
||||
|
||||
def _execute_remote_stat(self, path, all_vars, follow, tmp=None):
|
||||
def _execute_remote_stat(self, path, all_vars, follow, tmp=None, checksum=True):
|
||||
'''
|
||||
Get information from remote file.
|
||||
'''
|
||||
|
@ -479,7 +479,7 @@ class ActionBase(with_metaclass(ABCMeta, object)):
|
|||
path=path,
|
||||
follow=follow,
|
||||
get_md5=False,
|
||||
get_checksum=True,
|
||||
get_checksum=checksum,
|
||||
checksum_algo='sha1',
|
||||
)
|
||||
mystat = self._execute_module(module_name='stat', module_args=module_args, task_vars=all_vars, tmp=tmp, delete_remote_tmp=(tmp is None), wrap_async=False)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue