Skip to content

Commit

Permalink
Pass absolute paths to atmoic_move(). (#799)
Browse files Browse the repository at this point in the history
  • Loading branch information
felixfontein authored Oct 1, 2024
1 parent 5a2dff7 commit db871c2
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 6 deletions.
2 changes: 2 additions & 0 deletions changelogs/fragments/799-atomic.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
bugfixes:
- "various modules - pass absolute paths to ``module.atomic_move()`` (https://github.com/ansible/ansible/issues/83950, https://github.com/ansible-collections/community.crypto/pull/799)."
2 changes: 1 addition & 1 deletion plugins/module_utils/io.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ def write_file(module, content, default_mode=None, path=None):
if os.path.exists(file_args['path']):
module.set_fs_attributes_if_different(file_args, False)
# Move tempfile to final destination
module.atomic_move(tmp_name, file_args['path'])
module.atomic_move(os.path.abspath(tmp_name), os.path.abspath(file_args['path']))
# Try to update permissions again
if not module.check_file_absent_if_check_mode(file_args['path']):
module.set_fs_attributes_if_different(file_args, False)
Expand Down
8 changes: 4 additions & 4 deletions plugins/module_utils/openssh/backends/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def backup_and_restore(module, path, *args, **kwargs):
f(module, path, *args, **kwargs)
except Exception:
if backup_file is not None:
module.atomic_move(backup_file, path)
module.atomic_move(os.path.abspath(backup_file), os.path.abspath(path))
raise
else:
module.add_cleanup_file(backup_file)
Expand All @@ -38,7 +38,7 @@ def backup_and_restore(module, path, *args, **kwargs):

@restore_on_failure
def safe_atomic_move(module, path, destination):
module.atomic_move(path, destination)
module.atomic_move(os.path.abspath(path), os.path.abspath(destination))


def _restore_all_on_failure(f):
Expand All @@ -49,7 +49,7 @@ def backup_and_restore(self, sources_and_destinations, *args, **kwargs):
f(self, sources_and_destinations, *args, **kwargs)
except Exception:
for destination, backup in backups:
self.module.atomic_move(backup, destination)
self.module.atomic_move(os.path.abspath(backup), os.path.abspath(destination))
raise
else:
for destination, backup in backups:
Expand Down Expand Up @@ -138,7 +138,7 @@ def _safe_secure_move(self, sources_and_destinations):
"""
for source, destination in sources_and_destinations:
if os.path.exists(destination):
self.module.atomic_move(source, destination)
self.module.atomic_move(os.path.abspath(source), os.path.abspath(destination))
else:
self.module.preserved_copy(source, destination)

Expand Down
2 changes: 1 addition & 1 deletion plugins/modules/openssl_dhparam.py
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,7 @@ def _do_generate(self, module):
if self.backup:
self.backup_file = module.backup_local(self.path)
try:
module.atomic_move(tmpsrc, self.path)
module.atomic_move(os.path.abspath(tmpsrc), os.path.abspath(self.path))
except Exception as e:
module.fail_json(msg="Failed to write to file %s: %s" % (self.path, str(e)))

Expand Down

0 comments on commit db871c2

Please sign in to comment.