mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-23 10:51:24 -07:00
create module tmpdir based on remote_tmp (#39833)
* create module tmpdir based on remote_tmp * Source remote_tmp from controller if possible * Fixed sanity test and not use lambda * Added expansion of env vars to the remote tmp * Fixed sanity issues * Added note around shell remote_tmp option * Changed fallback tmp dir to ~/.ansible/tmp to make shell defaults
This commit is contained in:
parent
1d640182c6
commit
44ab948e5d
5 changed files with 111 additions and 5 deletions
|
@ -41,13 +41,15 @@ PASS_VARS = {
|
|||
'check_mode': 'check_mode',
|
||||
'debug': '_debug',
|
||||
'diff': '_diff',
|
||||
'keep_remote_files': '_keep_remote_files',
|
||||
'module_name': '_name',
|
||||
'no_log': 'no_log',
|
||||
'remote_tmp': '_remote_tmp',
|
||||
'selinux_special_fs': '_selinux_special_fs',
|
||||
'shell_executable': '_shell',
|
||||
'socket': '_socket_path',
|
||||
'syslog_facility': '_syslog_facility',
|
||||
'tmpdir': 'tmpdir',
|
||||
'tmpdir': '_tmpdir',
|
||||
'verbosity': '_verbosity',
|
||||
'version': 'ansible_version',
|
||||
}
|
||||
|
@ -58,6 +60,7 @@ PASS_BOOLS = ('no_log', 'debug', 'diff')
|
|||
# The functions available here can be used to do many common tasks,
|
||||
# to simplify development of Python modules.
|
||||
|
||||
import atexit
|
||||
import locale
|
||||
import os
|
||||
import re
|
||||
|
@ -853,6 +856,7 @@ class AnsibleModule(object):
|
|||
self.aliases = {}
|
||||
self._legal_inputs = ['_ansible_%s' % k for k in PASS_VARS]
|
||||
self._options_context = list()
|
||||
self._tmpdir = None
|
||||
|
||||
if add_file_common_args:
|
||||
for k, v in FILE_COMMON_ARGUMENTS.items():
|
||||
|
@ -928,6 +932,20 @@ class AnsibleModule(object):
|
|||
' Update the code for this module In the future, AnsibleModule will'
|
||||
' always check for invalid arguments.', version='2.9')
|
||||
|
||||
@property
|
||||
def tmpdir(self):
|
||||
# if _ansible_tmpdir was not set, the module needs to create it and
|
||||
# clean it up once finished.
|
||||
if self._tmpdir is None:
|
||||
basedir = os.path.expanduser(os.path.expandvars(self._remote_tmp))
|
||||
basefile = "ansible-moduletmp-%s-" % time.time()
|
||||
tmpdir = tempfile.mkdtemp(prefix=basefile, dir=basedir)
|
||||
if not self._keep_remote_files:
|
||||
atexit.register(shutil.rmtree, tmpdir)
|
||||
self._tmpdir = tmpdir
|
||||
|
||||
return self._tmpdir
|
||||
|
||||
def warn(self, warning):
|
||||
|
||||
if isinstance(warning, string_types):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue