fix: action _fixup_perms2 macos +a remote_paths in list() as it can be a tuple (#74613) (#75336)

* fix: action _fixup_perms2 macos +a remote_paths in list() as it can be tuple

in `lib/ansible/plugin/action/__init__.py`'s `_fixup_perms2`,
`remote_paths` can be a list or tuple. however, the macos
specific attempt to use chmod +a attempts to concatenate
`remote_paths` with a list, which will fail if it is a tuple.
wrapping `remote_paths` in `list()` fixes this error.

* Update changelogs/fragments/74613-actionfixup_perms2_macos_remote_paths_ensure_list.yml

Co-authored-by: Rick Elrod <rick@elrod.me>
(cherry picked from commit df6554c4ec)

Co-authored-by: Shane St Savage <shane@axiomdatascience.com>
pull/74257/head
Brian Coca 3 years ago committed by GitHub
parent 66ca0abaf4
commit b866d6f708
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,2 @@
bugfixes:
- "remote tmpdir permissions - fix type error in macOS chmod ACL fallback (https://github.com/ansible/ansible/pull/74613)."

@ -630,7 +630,7 @@ class ActionBase(with_metaclass(ABCMeta, object)):
# pass that argument as the first element of remote_paths. So we end # pass that argument as the first element of remote_paths. So we end
# up running `chmod +a [that argument] [file 1] [file 2] ...` # up running `chmod +a [that argument] [file 1] [file 2] ...`
try: try:
res = self._remote_chmod([chmod_acl_mode] + remote_paths, '+a') res = self._remote_chmod([chmod_acl_mode] + list(remote_paths), '+a')
except AnsibleAuthenticationFailure as e: except AnsibleAuthenticationFailure as e:
# Solaris-based chmod will return 5 when it sees an invalid mode, # Solaris-based chmod will return 5 when it sees an invalid mode,
# and +a is invalid there. Because it returns 5, which is the same # and +a is invalid there. Because it returns 5, which is the same

Loading…
Cancel
Save