From 71f46d69d62a982833f0f7b7ca0dffbbde117f61 Mon Sep 17 00:00:00 2001 From: Toshio Kuratomi Date: Wed, 7 Feb 2018 15:11:36 -0800 Subject: [PATCH] First bit of fixing temporary to have one source of truth (#35747) * First bit of fixing temporary to have one source of truth * Fix pep8 * Remove explicit make_tmp_path() in copy The copy action plugin sets TRANSFER_FILES=True so it does not need to set the temporary directory explicitly; the base class's run() method will do that for us. * Fix for calling a module's run when a shell has already created a temp path. * Remember to inform the rest of the world when tempdir is removed * New strategy for how to warn on passing tmp Now we just warn when calling the parent class run() early. If the module does a late call to the parent run() and doesn't make use of the temporary directory, then we don't check for the possibility that the user mistakenly is sending tmp in. If we truly deprecate this (rather than ignoring it forever) then we might want to switch back to checking for someone passing a value in as tmp. * Remove tmp parameter from _execute_module as well * Port all action plugins to not send tmp explicitly This is now handled inside of _execute_module via the _connection._shell.tempdir attribute. Also update warnings and docs to tell people to set the attribute instead of using _execute_module's tmp parameter. * Always set local tempdir variable --- lib/ansible/plugins/action/__init__.py | 74 ++++++++++++------- lib/ansible/plugins/action/add_host.py | 1 + lib/ansible/plugins/action/aireos.py | 4 +- lib/ansible/plugins/action/aireos_config.py | 1 + lib/ansible/plugins/action/aruba.py | 3 +- lib/ansible/plugins/action/aruba_config.py | 1 + lib/ansible/plugins/action/asa.py | 3 +- lib/ansible/plugins/action/asa_config.py | 1 + lib/ansible/plugins/action/assemble.py | 17 ++--- lib/ansible/plugins/action/assert.py | 1 + lib/ansible/plugins/action/aws_s3.py | 1 + lib/ansible/plugins/action/bigip.py | 4 +- lib/ansible/plugins/action/ce.py | 4 +- lib/ansible/plugins/action/ce_config.py | 1 + lib/ansible/plugins/action/ce_template.py | 1 + lib/ansible/plugins/action/command.py | 7 +- lib/ansible/plugins/action/copy.py | 27 ++++--- lib/ansible/plugins/action/debug.py | 1 + lib/ansible/plugins/action/dellos10.py | 4 +- lib/ansible/plugins/action/dellos10_config.py | 1 + lib/ansible/plugins/action/dellos6.py | 4 +- lib/ansible/plugins/action/dellos6_config.py | 1 + lib/ansible/plugins/action/dellos9.py | 4 +- lib/ansible/plugins/action/dellos9_config.py | 1 + lib/ansible/plugins/action/enos.py | 3 +- lib/ansible/plugins/action/enos_config.py | 1 + lib/ansible/plugins/action/eos.py | 4 +- lib/ansible/plugins/action/eos_config.py | 1 + lib/ansible/plugins/action/fail.py | 1 + lib/ansible/plugins/action/fetch.py | 7 +- lib/ansible/plugins/action/fortios_config.py | 1 + lib/ansible/plugins/action/group_by.py | 1 + lib/ansible/plugins/action/include_vars.py | 4 +- lib/ansible/plugins/action/ios.py | 4 +- lib/ansible/plugins/action/ios_config.py | 1 + lib/ansible/plugins/action/iosxr.py | 4 +- lib/ansible/plugins/action/iosxr_config.py | 1 + lib/ansible/plugins/action/ironware.py | 3 +- lib/ansible/plugins/action/ironware_config.py | 1 + lib/ansible/plugins/action/junos.py | 6 +- lib/ansible/plugins/action/junos_config.py | 1 + lib/ansible/plugins/action/net_banner.py | 1 + lib/ansible/plugins/action/net_base.py | 4 +- lib/ansible/plugins/action/net_config.py | 1 + lib/ansible/plugins/action/net_interface.py | 1 + .../plugins/action/net_l2_interface.py | 1 + .../plugins/action/net_l3_interface.py | 1 + lib/ansible/plugins/action/net_linkagg.py | 1 + lib/ansible/plugins/action/net_lldp.py | 1 + .../plugins/action/net_lldp_interface.py | 1 + lib/ansible/plugins/action/net_logging.py | 1 + lib/ansible/plugins/action/net_ping.py | 1 + .../plugins/action/net_static_route.py | 1 + lib/ansible/plugins/action/net_system.py | 1 + lib/ansible/plugins/action/net_user.py | 1 + lib/ansible/plugins/action/net_vlan.py | 1 + lib/ansible/plugins/action/net_vrf.py | 1 + lib/ansible/plugins/action/normal.py | 7 +- lib/ansible/plugins/action/nxos.py | 4 +- lib/ansible/plugins/action/nxos_config.py | 1 + lib/ansible/plugins/action/onyx_config.py | 1 + lib/ansible/plugins/action/package.py | 5 +- lib/ansible/plugins/action/patch.py | 7 +- lib/ansible/plugins/action/pause.py | 1 + lib/ansible/plugins/action/raw.py | 1 + lib/ansible/plugins/action/script.py | 7 +- lib/ansible/plugins/action/service.py | 5 +- lib/ansible/plugins/action/set_fact.py | 1 + lib/ansible/plugins/action/set_stats.py | 1 + lib/ansible/plugins/action/shell.py | 2 + lib/ansible/plugins/action/sros.py | 3 +- lib/ansible/plugins/action/sros_config.py | 1 + lib/ansible/plugins/action/synchronize.py | 1 + lib/ansible/plugins/action/telnet.py | 1 + lib/ansible/plugins/action/template.py | 7 +- lib/ansible/plugins/action/unarchive.py | 9 +-- lib/ansible/plugins/action/vyos.py | 4 +- lib/ansible/plugins/action/vyos_config.py | 1 + .../plugins/action/wait_for_connection.py | 5 +- lib/ansible/plugins/action/win_copy.py | 20 +++-- lib/ansible/plugins/action/win_reboot.py | 1 + lib/ansible/plugins/action/win_updates.py | 1 + 82 files changed, 210 insertions(+), 117 deletions(-) diff --git a/lib/ansible/plugins/action/__init__.py b/lib/ansible/plugins/action/__init__.py index e7860f46a0..7a5f10cb35 100644 --- a/lib/ansible/plugins/action/__init__.py +++ b/lib/ansible/plugins/action/__init__.py @@ -66,9 +66,9 @@ class ActionBase(with_metaclass(ABCMeta, object)): tasks. Everything else in this base class is a helper method for the action plugin to do that. - :kwarg tmp: Temporary directory. Sometimes an action plugin sets up - a temporary directory and then calls another module. This parameter - allows us to reuse the same directory for both. + :kwarg tmp: Deprecated parameter. This is no longer used. An action plugin that calls + another one and wants to use the same remote tmp for both should set + self._connection._shell.tempdir rather than this parameter. :kwarg task_vars: The variables (host vars, group vars, config vars, etc) associated with this task. :returns: dictionary of results from the module @@ -80,6 +80,12 @@ class ActionBase(with_metaclass(ABCMeta, object)): result = {} + if tmp is not None: + result['warning'] = ['ActionModule.run() no longer honors the tmp parameter. Action' + ' plugins should set self._connection._shell.tempdir to share' + ' the tempdir'] + del tmp + if self._task.async_val and not self._supports_async: raise AnsibleActionFail('async is not supported for this task.') elif self._play_context.check_mode and not self._supports_check_mode: @@ -87,10 +93,8 @@ class ActionBase(with_metaclass(ABCMeta, object)): elif self._task.async_val and self._play_context.check_mode: raise AnsibleActionFail('check mode and async cannot be used on same task.') - if not tmp and self._early_needs_tmp_path(): + if self._connection._shell.tempdir is None and self._early_needs_tmp_path(): self._make_tmp_path() - else: - self._connection._shell.tempdir = tmp return result @@ -311,6 +315,8 @@ class ActionBase(with_metaclass(ABCMeta, object)): if tmp_rm_data.get('rc', 0) != 0: display.warning('Error deleting remote temporary files (rc: %s, stderr: %s})' % (tmp_rm_res.get('rc'), tmp_rm_res.get('stderr', 'No error string available.'))) + else: + self._connection._shell.tempdir = None def _transfer_file(self, local_path, remote_path): self._connection.put_file(local_path, remote_path) @@ -485,13 +491,19 @@ class ActionBase(with_metaclass(ABCMeta, object)): ''' Get information from remote file. ''' + if tmp is not None: + display.warning('_execute_remote_stat no longer honors the tmp parameter. Action' + ' plugins should set self._connection._shell.tempdir to share' + ' the tempdir') + del tmp # No longer used + module_args = dict( path=path, follow=follow, 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), + mystat = self._execute_module(module_name='stat', module_args=module_args, task_vars=all_vars, wrap_async=False) if mystat.get('failed'): @@ -652,17 +664,24 @@ class ActionBase(with_metaclass(ABCMeta, object)): update.update(options) self.connection.set_options(update) - def _execute_module(self, module_name=None, module_args=None, tmp=None, task_vars=None, persist_files=False, delete_remote_tmp=True, wrap_async=False): + def _execute_module(self, module_name=None, module_args=None, tmp=None, task_vars=None, persist_files=False, delete_remote_tmp=None, wrap_async=False): ''' Transfer and run a module along with its arguments. ''' + if tmp is not None: + display.warning('_execute_module no longer honors the tmp parameter. Action plugins' + ' should set self._connection._shell.tempdir to share the tempdir') + del tmp # No longer used + if delete_remote_tmp is not None: + display.warning('_execute_module no longer honors the delete_remote_tmp parameter.' + ' Action plugins should check self._connection._shell.tempdir to' + ' see if a tempdir existed before they were called to determine' + ' if they are responsible for removing it.') + del delete_remote_tmp # No longer used + if task_vars is None: task_vars = dict() - remote_module_path = None - args_file_path = None - remote_files = [] - # if a module name was not specified for this execution, use the action from the task if module_name is None: module_name = self._task.action @@ -677,21 +696,22 @@ class ActionBase(with_metaclass(ABCMeta, object)): if not shebang and module_style != 'binary': raise AnsibleError("module (%s) is missing interpreter line" % module_name) - if not self._is_pipelining_enabled(module_style, wrap_async): + tempdir = self._connection._shell.tempdir + remote_module_path = None - # we might need remote tmp dir - if not tmp: - if not self._connection._shell.tempdir or tmp is None or 'tmp' not in tmp: - tmp = self._make_tmp_path() - else: - tmp = self._connection._shell.tempdir + if not self._is_pipelining_enabled(module_style, wrap_async): + # we might need remote temp dir + if tempdir is None: + self._make_tmp_path() + tempdir = self._connection._shell.tempdir remote_module_filename = self._connection._shell.get_remote_filename(module_path) - remote_module_path = self._connection._shell.join_path(tmp, remote_module_filename) + remote_module_path = self._connection._shell.join_path(tempdir, remote_module_filename) + args_file_path = None if module_style in ('old', 'non_native_want_json', 'binary'): # we'll also need a temp file to hold our module arguments - args_file_path = self._connection._shell.join_path(tmp, 'args') + args_file_path = self._connection._shell.join_path(tempdir, 'args') if remote_module_path or module_style != 'new': display.debug("transferring module to remote %s" % remote_module_path) @@ -712,8 +732,9 @@ class ActionBase(with_metaclass(ABCMeta, object)): environment_string = self._compute_environment_string() - if tmp and remote_module_path: - remote_files = [tmp, remote_module_path] + remote_files = [] + if tempdir and remote_module_path: + remote_files = [tempdir, remote_module_path] if args_file_path: remote_files.append(args_file_path) @@ -727,7 +748,7 @@ class ActionBase(with_metaclass(ABCMeta, object)): (async_module_style, shebang, async_module_data, async_module_path) = self._configure_module(module_name='async_wrapper', module_args=dict(), task_vars=task_vars) async_module_remote_filename = self._connection._shell.get_remote_filename(async_module_path) - remote_async_module_path = self._connection._shell.join_path(tmp, async_module_remote_filename) + remote_async_module_path = self._connection._shell.join_path(tempdir, async_module_remote_filename) self._transfer_data(remote_async_module_path, async_module_data) remote_files.append(remote_async_module_path) @@ -749,7 +770,7 @@ class ActionBase(with_metaclass(ABCMeta, object)): # maintain a fixed number of positional parameters for async_wrapper async_cmd.append('_') - if not self._should_remove_tmp_path(tmp): + if not self._should_remove_tmp_path(tempdir): async_cmd.append("-preserve_tmp") cmd = " ".join(to_text(x) for x in async_cmd) @@ -763,7 +784,8 @@ class ActionBase(with_metaclass(ABCMeta, object)): cmd = self._connection._shell.build_module_command(environment_string, shebang, cmd, arg_path=args_file_path).strip() - # Fix permissions of the tmp path and tmp files. This should be called after all files have been transferred. + # Fix permissions of the tempdir path and tempdir files. This should be called after all + # files have been transferred. if remote_files: # remove none/empty remote_files = [x for x in remote_files if x] diff --git a/lib/ansible/plugins/action/add_host.py b/lib/ansible/plugins/action/add_host.py index cb4f2a0317..cd4bb40e78 100644 --- a/lib/ansible/plugins/action/add_host.py +++ b/lib/ansible/plugins/action/add_host.py @@ -44,6 +44,7 @@ class ActionModule(ActionBase): self._supports_check_mode = True result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect # Parse out any hostname:port patterns new_name = self._task.args.get('name', self._task.args.get('hostname', self._task.args.get('host', None))) diff --git a/lib/ansible/plugins/action/aireos.py b/lib/ansible/plugins/action/aireos.py index 710eeb842a..4714cadba5 100644 --- a/lib/ansible/plugins/action/aireos.py +++ b/lib/ansible/plugins/action/aireos.py @@ -40,6 +40,7 @@ except ImportError: class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): + del tmp # tmp no longer has any effect if self._play_context.connection != 'local': return dict( @@ -83,5 +84,6 @@ class ActionModule(_ActionModule): self._play_context.become = False self._play_context.become_method = None - result = super(ActionModule, self).run(tmp, task_vars) + result = super(ActionModule, self).run(task_vars=task_vars) + return result diff --git a/lib/ansible/plugins/action/aireos_config.py b/lib/ansible/plugins/action/aireos_config.py index c92276846e..99abd86bdf 100644 --- a/lib/ansible/plugins/action/aireos_config.py +++ b/lib/ansible/plugins/action/aireos_config.py @@ -43,6 +43,7 @@ class ActionModule(_ActionModule): return dict(failed=True, msg=exc.message) result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if self._task.args.get('backup') and result.get('__backup__'): # User requested backup and no error occurred in module. diff --git a/lib/ansible/plugins/action/aruba.py b/lib/ansible/plugins/action/aruba.py index ea3aabe76a..2c2fcc0037 100644 --- a/lib/ansible/plugins/action/aruba.py +++ b/lib/ansible/plugins/action/aruba.py @@ -39,6 +39,7 @@ except ImportError: class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): + del tmp # tmp no longer has any effect if self._play_context.connection != 'local': return dict( @@ -83,5 +84,5 @@ class ActionModule(_ActionModule): self._play_context.become = False self._play_context.become_method = None - result = super(ActionModule, self).run(tmp, task_vars) + result = super(ActionModule, self).run(task_vars=task_vars) return result diff --git a/lib/ansible/plugins/action/aruba_config.py b/lib/ansible/plugins/action/aruba_config.py index 509cd67c10..bff406b150 100644 --- a/lib/ansible/plugins/action/aruba_config.py +++ b/lib/ansible/plugins/action/aruba_config.py @@ -43,6 +43,7 @@ class ActionModule(_ActionModule): return dict(failed=True, msg=exc.message) result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if self._task.args.get('backup') and result.get('__backup__'): # User requested backup and no error occurred in module. diff --git a/lib/ansible/plugins/action/asa.py b/lib/ansible/plugins/action/asa.py index 5424a32b7b..40f775a970 100644 --- a/lib/ansible/plugins/action/asa.py +++ b/lib/ansible/plugins/action/asa.py @@ -40,6 +40,7 @@ except ImportError: class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): + del tmp # tmp no longer has any effect if self._play_context.connection == 'local': provider = load_provider(asa_provider_spec, self._task.args) @@ -69,6 +70,6 @@ class ActionModule(_ActionModule): task_vars['ansible_socket'] = socket_path - result = super(ActionModule, self).run(tmp, task_vars) + result = super(ActionModule, self).run(task_vars=task_vars) return result diff --git a/lib/ansible/plugins/action/asa_config.py b/lib/ansible/plugins/action/asa_config.py index 98200856e4..bd8916b65a 100644 --- a/lib/ansible/plugins/action/asa_config.py +++ b/lib/ansible/plugins/action/asa_config.py @@ -43,6 +43,7 @@ class ActionModule(_ActionModule): return dict(failed=True, msg=exc.message) result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if self._task.args.get('backup') and result.get('__backup__'): # User requested backup and no error occurred in module. diff --git a/lib/ansible/plugins/action/assemble.py b/lib/ansible/plugins/action/assemble.py index d4589ee61a..499943e0d9 100644 --- a/lib/ansible/plugins/action/assemble.py +++ b/lib/ansible/plugins/action/assemble.py @@ -84,8 +84,7 @@ class ActionModule(ActionBase): self._supports_check_mode = False result = super(ActionModule, self).run(tmp, task_vars) - - tmp = self._connection._shell.tempdir + del tmp # tmp no longer has any effect if task_vars is None: task_vars = dict() @@ -104,7 +103,7 @@ class ActionModule(ActionBase): raise AnsibleActionFail("src and dest are required") if boolean(remote_src, strict=False): - result.update(self._execute_module(tmp=tmp, task_vars=task_vars)) + result.update(self._execute_module(task_vars=task_vars)) raise _AnsibleActionDone() else: try: @@ -124,7 +123,7 @@ class ActionModule(ActionBase): path_checksum = checksum_s(path) dest = self._remote_expand_user(dest) - dest_stat = self._execute_remote_stat(dest, all_vars=task_vars, follow=follow, tmp=tmp) + dest_stat = self._execute_remote_stat(dest, all_vars=task_vars, follow=follow) diff = {} @@ -148,24 +147,24 @@ class ActionModule(ActionBase): if self._play_context.diff: diff = self._get_diff_data(dest, path, task_vars) - remote_path = self._connection._shell.join_path(tmp, 'src') + remote_path = self._connection._shell.join_path(self._connection._shell.tempdir, 'src') xfered = self._transfer_file(path, remote_path) # fix file permissions when the copy is done as a different user - self._fixup_perms2((tmp, remote_path)) + self._fixup_perms2((self._connection._shell.tempdir, remote_path)) new_module_args.update(dict(src=xfered,)) - res = self._execute_module(module_name='copy', module_args=new_module_args, task_vars=task_vars, tmp=tmp) + res = self._execute_module(module_name='copy', module_args=new_module_args, task_vars=task_vars) if diff: res['diff'] = diff result.update(res) else: - result.update(self._execute_module(module_name='file', module_args=new_module_args, task_vars=task_vars, tmp=tmp)) + result.update(self._execute_module(module_name='file', module_args=new_module_args, task_vars=task_vars)) except AnsibleAction as e: result.update(e.result) finally: - self._remove_tmp_path(tmp) + self._remove_tmp_path(self._connection._shell.tempdir) return result diff --git a/lib/ansible/plugins/action/assert.py b/lib/ansible/plugins/action/assert.py index 808881b1ff..bf9fc6bb96 100644 --- a/lib/ansible/plugins/action/assert.py +++ b/lib/ansible/plugins/action/assert.py @@ -32,6 +32,7 @@ class ActionModule(ActionBase): task_vars = dict() result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if 'that' not in self._task.args: raise AnsibleError('conditional required in "that" string') diff --git a/lib/ansible/plugins/action/aws_s3.py b/lib/ansible/plugins/action/aws_s3.py index 5e0085d068..dfe7f2d428 100644 --- a/lib/ansible/plugins/action/aws_s3.py +++ b/lib/ansible/plugins/action/aws_s3.py @@ -35,6 +35,7 @@ class ActionModule(ActionBase): task_vars = dict() result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect source = self._task.args.get('src', None) diff --git a/lib/ansible/plugins/action/bigip.py b/lib/ansible/plugins/action/bigip.py index e11cff45d4..f4e399982f 100644 --- a/lib/ansible/plugins/action/bigip.py +++ b/lib/ansible/plugins/action/bigip.py @@ -43,6 +43,8 @@ except ImportError: class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): + del tmp # tmp no longer has any effect + if self._play_context.connection == 'network_cli': provider = self._task.args.get('provider', {}) if any(provider.values()): @@ -93,7 +95,7 @@ class ActionModule(_ActionModule): conn.send_command('exit') out = conn.get_prompt() - result = super(ActionModule, self).run(tmp, task_vars) + result = super(ActionModule, self).run(task_vars=task_vars) return result @staticmethod diff --git a/lib/ansible/plugins/action/ce.py b/lib/ansible/plugins/action/ce.py index 92c7affb72..f896af4369 100644 --- a/lib/ansible/plugins/action/ce.py +++ b/lib/ansible/plugins/action/ce.py @@ -40,6 +40,8 @@ except ImportError: class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): + del tmp # tmp no longer has any effect + if self._play_context.connection != 'local': return dict( failed=True, @@ -92,5 +94,5 @@ class ActionModule(_ActionModule): self._task.args['transport'] = transport self._task.args['provider'] = provider - result = super(ActionModule, self).run(tmp, task_vars) + result = super(ActionModule, self).run(task_vars=task_vars) return result diff --git a/lib/ansible/plugins/action/ce_config.py b/lib/ansible/plugins/action/ce_config.py index f97aad09fc..a798d1f9c3 100644 --- a/lib/ansible/plugins/action/ce_config.py +++ b/lib/ansible/plugins/action/ce_config.py @@ -44,6 +44,7 @@ class ActionModule(_ActionModule): return dict(failed=True, msg=exc.message) result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if self._task.args.get('backup') and result.get('__backup__'): # User requested backup and no error occurred in module. diff --git a/lib/ansible/plugins/action/ce_template.py b/lib/ansible/plugins/action/ce_template.py index 2c4e1f0ab5..8d62b25647 100644 --- a/lib/ansible/plugins/action/ce_template.py +++ b/lib/ansible/plugins/action/ce_template.py @@ -38,6 +38,7 @@ class ActionModule(_ActionModule): return dict(failed=True, msg=exc.message) result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if self._task.args.get('backup') and result.get('__backup__'): # User requested backup and no error occurred in module. diff --git a/lib/ansible/plugins/action/command.py b/lib/ansible/plugins/action/command.py index 63a52a0e2e..7b263f6b28 100644 --- a/lib/ansible/plugins/action/command.py +++ b/lib/ansible/plugins/action/command.py @@ -14,18 +14,17 @@ class ActionModule(ActionBase): def run(self, tmp=None, task_vars=None): self._supports_async = True results = super(ActionModule, self).run(tmp, task_vars) - - tmp = self._connection._shell.tempdir + del tmp # tmp no longer has any effect # Command module has a special config option to turn off the command nanny warnings if 'warn' not in self._task.args: self._task.args['warn'] = C.COMMAND_WARNINGS wrap_async = self._task.async_val and not self._connection.has_native_async - results = merge_hash(results, self._execute_module(tmp=tmp, task_vars=task_vars, wrap_async=wrap_async)) + results = merge_hash(results, self._execute_module(task_vars=task_vars, wrap_async=wrap_async)) if not wrap_async: # remove a temporary path we created - self._remove_tmp_path(tmp) + self._remove_tmp_path(self._connection._shell.tempdir) return results diff --git a/lib/ansible/plugins/action/copy.py b/lib/ansible/plugins/action/copy.py index a9901a4cd5..a5cbecf35b 100644 --- a/lib/ansible/plugins/action/copy.py +++ b/lib/ansible/plugins/action/copy.py @@ -192,7 +192,7 @@ class ActionModule(ActionBase): # remove action plugin only keys return dict((k, v) for k, v in module_args.items() if k not in ('content', 'decrypt')) - def _copy_file(self, source_full, source_rel, content, content_tempfile, dest, task_vars, tmp): + def _copy_file(self, source_full, source_rel, content, content_tempfile, dest, task_vars): decrypt = boolean(self._task.args.get('decrypt', True), strict=False) follow = boolean(self._task.args.get('follow', False), strict=False) force = boolean(self._task.args.get('force', 'yes'), strict=False) @@ -224,7 +224,7 @@ class ActionModule(ActionBase): dest_file = dest # Attempt to get remote file info - dest_status = self._execute_remote_stat(dest_file, all_vars=task_vars, follow=follow, tmp=tmp, checksum=force) + dest_status = self._execute_remote_stat(dest_file, all_vars=task_vars, follow=follow, checksum=force) if dest_status['exists'] and dest_status['isdir']: # The dest is a directory. @@ -237,7 +237,7 @@ class ActionModule(ActionBase): else: # Append the relative source location to the destination and get remote stats again dest_file = self._connection._shell.join_path(dest, source_rel) - dest_status = self._execute_remote_stat(dest_file, all_vars=task_vars, follow=follow, tmp=tmp, checksum=force) + dest_status = self._execute_remote_stat(dest_file, all_vars=task_vars, follow=follow, checksum=force) if dest_status['exists'] and not force: # remote_file exists so continue to next iteration. @@ -258,7 +258,7 @@ class ActionModule(ActionBase): return result # Define a remote directory that we will copy the file to. - tmp_src = self._connection._shell.join_path(tmp, 'source') + tmp_src = self._connection._shell.join_path(self._connection._shell.tempdir, 'source') remote_path = None @@ -273,7 +273,7 @@ class ActionModule(ActionBase): # fix file permissions when the copy is done as a different user if remote_path: - self._fixup_perms2((tmp, remote_path)) + self._fixup_perms2((self._connection._shell.tempdir, remote_path)) if raw: # Continue to next iteration if raw is defined. @@ -297,7 +297,7 @@ class ActionModule(ActionBase): if lmode: new_module_args['mode'] = lmode - module_return = self._execute_module(module_name='copy', module_args=new_module_args, task_vars=task_vars, tmp=tmp) + module_return = self._execute_module(module_name='copy', module_args=new_module_args, task_vars=task_vars) else: # no need to transfer the file, already correct hash, but still need to call @@ -312,7 +312,7 @@ class ActionModule(ActionBase): # If checksums match, and follow = True, find out if 'dest' is a link. If so, # change it to point to the source of the link. if follow: - dest_status_nofollow = self._execute_remote_stat(dest_file, all_vars=task_vars, tmp=tmp, follow=False) + dest_status_nofollow = self._execute_remote_stat(dest_file, all_vars=task_vars, follow=False) if dest_status_nofollow['islnk'] and 'lnk_source' in dest_status_nofollow.keys(): dest = dest_status_nofollow['lnk_source'] @@ -331,7 +331,7 @@ class ActionModule(ActionBase): new_module_args['mode'] = lmode # Execute the file module. - module_return = self._execute_module(module_name='file', module_args=new_module_args, task_vars=task_vars, tmp=tmp) + module_return = self._execute_module(module_name='file', module_args=new_module_args, task_vars=task_vars) if not module_return.get('checksum'): module_return['checksum'] = local_checksum @@ -391,8 +391,7 @@ class ActionModule(ActionBase): task_vars = dict() result = super(ActionModule, self).run(tmp, task_vars) - - tmp = self._connection._shell.tempdir + del tmp # tmp no longer has any effect source = self._task.args.get('src', None) content = self._task.args.get('content', None) @@ -492,7 +491,7 @@ class ActionModule(ActionBase): for source_full, source_rel in source_files['files']: # copy files over. This happens first as directories that have # a file do not need to be created later - module_return = self._copy_file(source_full, source_rel, content, content_tempfile, dest, task_vars, tmp) + module_return = self._copy_file(source_full, source_rel, content, content_tempfile, dest, task_vars) if module_return is None: continue @@ -518,7 +517,7 @@ class ActionModule(ActionBase): new_module_args['state'] = 'directory' new_module_args['mode'] = self._task.args.get('directory_mode', None) - module_return = self._execute_module(module_name='file', module_args=new_module_args, task_vars=task_vars, tmp=tmp) + module_return = self._execute_module(module_name='file', module_args=new_module_args, task_vars=task_vars) module_executed = True changed = changed or module_return.get('changed', False) @@ -530,7 +529,7 @@ class ActionModule(ActionBase): new_module_args['state'] = 'link' new_module_args['force'] = True - module_return = self._execute_module(module_name='file', module_args=new_module_args, task_vars=task_vars, tmp=tmp) + module_return = self._execute_module(module_name='file', module_args=new_module_args, task_vars=task_vars) module_executed = True if module_return.get('failed'): @@ -550,6 +549,6 @@ class ActionModule(ActionBase): result.update(dict(dest=dest, src=source, changed=changed)) # Delete tmp path - self._remove_tmp_path(tmp) + self._remove_tmp_path(self._connection._shell.tempdir) return result diff --git a/lib/ansible/plugins/action/debug.py b/lib/ansible/plugins/action/debug.py index 06337e564c..b0473d9288 100644 --- a/lib/ansible/plugins/action/debug.py +++ b/lib/ansible/plugins/action/debug.py @@ -42,6 +42,7 @@ class ActionModule(ActionBase): return {"failed": True, "msg": "'msg' and 'var' are incompatible options"} result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect # get task verbosity verbosity = int(self._task.args.get('verbosity', 0)) diff --git a/lib/ansible/plugins/action/dellos10.py b/lib/ansible/plugins/action/dellos10.py index 83fae9a55c..4bc461f8df 100644 --- a/lib/ansible/plugins/action/dellos10.py +++ b/lib/ansible/plugins/action/dellos10.py @@ -41,6 +41,8 @@ except ImportError: class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): + del tmp # tmp no longer has any effect + socket_path = None if self._play_context.connection == 'network_cli': @@ -87,5 +89,5 @@ class ActionModule(_ActionModule): conn.send_command('exit') out = conn.get_prompt() - result = super(ActionModule, self).run(tmp, task_vars) + result = super(ActionModule, self).run(task_vars=task_vars) return result diff --git a/lib/ansible/plugins/action/dellos10_config.py b/lib/ansible/plugins/action/dellos10_config.py index 77769b16c7..ab8b60cdbd 100644 --- a/lib/ansible/plugins/action/dellos10_config.py +++ b/lib/ansible/plugins/action/dellos10_config.py @@ -45,6 +45,7 @@ class ActionModule(_ActionModule): return dict(failed=True, msg=exc.message) result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if self._task.args.get('backup') and result.get('__backup__'): # User requested backup and no error occurred in module. diff --git a/lib/ansible/plugins/action/dellos6.py b/lib/ansible/plugins/action/dellos6.py index 387cdfa00d..b469cefab4 100644 --- a/lib/ansible/plugins/action/dellos6.py +++ b/lib/ansible/plugins/action/dellos6.py @@ -41,6 +41,8 @@ except ImportError: class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): + del tmp # tmp no longer has any effect + socket_path = None if self._play_context.connection == 'network_cli': @@ -87,5 +89,5 @@ class ActionModule(_ActionModule): conn.send_command('exit') out = conn.get_prompt() - result = super(ActionModule, self).run(tmp, task_vars) + result = super(ActionModule, self).run(task_vars=task_vars) return result diff --git a/lib/ansible/plugins/action/dellos6_config.py b/lib/ansible/plugins/action/dellos6_config.py index 22e2961d46..b02ee7232d 100644 --- a/lib/ansible/plugins/action/dellos6_config.py +++ b/lib/ansible/plugins/action/dellos6_config.py @@ -42,6 +42,7 @@ class ActionModule(_ActionModule): return dict(failed=True, msg=exc.message) result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if self._task.args.get('backup') and result.get('__backup__'): # User requested backup and no error occurred in module. diff --git a/lib/ansible/plugins/action/dellos9.py b/lib/ansible/plugins/action/dellos9.py index 463a4c5a9e..85b518f8f0 100644 --- a/lib/ansible/plugins/action/dellos9.py +++ b/lib/ansible/plugins/action/dellos9.py @@ -41,6 +41,8 @@ except ImportError: class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): + del tmp # tmp no longer has any effect + socket_path = None if self._play_context.connection == 'network_cli': @@ -87,5 +89,5 @@ class ActionModule(_ActionModule): conn.send_command('exit') out = conn.get_prompt() - result = super(ActionModule, self).run(tmp, task_vars) + result = super(ActionModule, self).run(task_vars=task_vars) return result diff --git a/lib/ansible/plugins/action/dellos9_config.py b/lib/ansible/plugins/action/dellos9_config.py index aded696987..88d4dd42b4 100644 --- a/lib/ansible/plugins/action/dellos9_config.py +++ b/lib/ansible/plugins/action/dellos9_config.py @@ -45,6 +45,7 @@ class ActionModule(_ActionModule): return dict(failed=True, msg=exc.message) result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if self._task.args.get('backup') and result.get('__backup__'): # User requested backup and no error occurred in module. diff --git a/lib/ansible/plugins/action/enos.py b/lib/ansible/plugins/action/enos.py index 75c70f0ade..a5da914839 100644 --- a/lib/ansible/plugins/action/enos.py +++ b/lib/ansible/plugins/action/enos.py @@ -44,6 +44,7 @@ except ImportError: class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): + del tmp # tmp no longer has any effect socket_path = None if self._play_context.connection == 'local': @@ -85,5 +86,5 @@ class ActionModule(_ActionModule): else: conn.send_command('enable') - result = super(ActionModule, self).run(tmp, task_vars) + result = super(ActionModule, self).run(task_vars=task_vars) return result diff --git a/lib/ansible/plugins/action/enos_config.py b/lib/ansible/plugins/action/enos_config.py index 75bff2f4a1..b7080c6e60 100644 --- a/lib/ansible/plugins/action/enos_config.py +++ b/lib/ansible/plugins/action/enos_config.py @@ -47,6 +47,7 @@ class ActionModule(_ActionModule): return dict(failed=True, msg=to_text(exc)) result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if self._task.args.get('backup') and result.get('__backup__'): # User requested backup and no error occurred in module. diff --git a/lib/ansible/plugins/action/eos.py b/lib/ansible/plugins/action/eos.py index 4fd309c862..3cb1766715 100644 --- a/lib/ansible/plugins/action/eos.py +++ b/lib/ansible/plugins/action/eos.py @@ -39,6 +39,8 @@ except ImportError: class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): + del tmp # tmp no longer has any effect + socket_path = None if self._play_context.connection == 'network_cli': @@ -96,7 +98,7 @@ class ActionModule(_ActionModule): conn.send_command('abort') out = conn.get_prompt() - result = super(ActionModule, self).run(tmp, task_vars) + result = super(ActionModule, self).run(task_vars=task_vars) return result @staticmethod diff --git a/lib/ansible/plugins/action/eos_config.py b/lib/ansible/plugins/action/eos_config.py index 276f7b0e3c..7ddeed1bb1 100644 --- a/lib/ansible/plugins/action/eos_config.py +++ b/lib/ansible/plugins/action/eos_config.py @@ -44,6 +44,7 @@ class ActionModule(_ActionModule): return dict(failed=True, msg=to_text(exc)) result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if self._task.args.get('backup') and result.get('__backup__'): # User requested backup and no error occurred in module. diff --git a/lib/ansible/plugins/action/fail.py b/lib/ansible/plugins/action/fail.py index c78f1683a9..9a9da51d75 100644 --- a/lib/ansible/plugins/action/fail.py +++ b/lib/ansible/plugins/action/fail.py @@ -31,6 +31,7 @@ class ActionModule(ActionBase): task_vars = dict() result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect msg = 'Failed as requested from task' if self._task.args and 'msg' in self._task.args: diff --git a/lib/ansible/plugins/action/fetch.py b/lib/ansible/plugins/action/fetch.py index f87c0b5535..64f81a1032 100644 --- a/lib/ansible/plugins/action/fetch.py +++ b/lib/ansible/plugins/action/fetch.py @@ -43,8 +43,7 @@ class ActionModule(ActionBase): task_vars = dict() result = super(ActionModule, self).run(tmp, task_vars) - - tmp = self._connection._shell.tempdir + del tmp # tmp no longer has any effect try: if self._play_context.check_mode: @@ -93,7 +92,7 @@ class ActionModule(ActionBase): # use slurp if permissions are lacking or privilege escalation is needed remote_data = None if remote_checksum in ('1', '2', None): - slurpres = self._execute_module(module_name='slurp', module_args=dict(src=source), task_vars=task_vars, tmp=tmp) + slurpres = self._execute_module(module_name='slurp', module_args=dict(src=source), task_vars=task_vars) if slurpres.get('failed'): if not fail_on_missing and (slurpres.get('msg').startswith('file not found') or remote_checksum == '1'): result['msg'] = "the remote file does not exist, not transferring, ignored" @@ -214,6 +213,6 @@ class ActionModule(ActionBase): result.update(dict(changed=False, md5sum=local_md5, file=source, dest=dest, checksum=local_checksum)) finally: - self._remove_tmp_path(tmp) + self._remove_tmp_path(self._connection._shell.tempdir) return result diff --git a/lib/ansible/plugins/action/fortios_config.py b/lib/ansible/plugins/action/fortios_config.py index 6692569598..9cac71c55b 100644 --- a/lib/ansible/plugins/action/fortios_config.py +++ b/lib/ansible/plugins/action/fortios_config.py @@ -43,6 +43,7 @@ class ActionModule(_ActionModule): return dict(failed=True, msg=exc.message) result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect return result diff --git a/lib/ansible/plugins/action/group_by.py b/lib/ansible/plugins/action/group_by.py index 1266803a59..58749d8470 100644 --- a/lib/ansible/plugins/action/group_by.py +++ b/lib/ansible/plugins/action/group_by.py @@ -32,6 +32,7 @@ class ActionModule(ActionBase): task_vars = dict() result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if 'key' not in self._task.args: result['failed'] = True diff --git a/lib/ansible/plugins/action/include_vars.py b/lib/ansible/plugins/action/include_vars.py index 5f89b1e703..7ef24e9b3a 100644 --- a/lib/ansible/plugins/action/include_vars.py +++ b/lib/ansible/plugins/action/include_vars.py @@ -80,6 +80,8 @@ class ActionModule(ActionBase): def run(self, tmp=None, task_vars=None): """ Load yml files recursively from a directory. """ + del tmp # tmp no longer has any effect + if task_vars is None: task_vars = dict() @@ -139,7 +141,7 @@ class ActionModule(ActionBase): scope[self.return_results_as_name] = results results = scope - result = super(ActionModule, self).run(tmp, task_vars) + result = super(ActionModule, self).run(task_vars=task_vars) if failed: result['failed'] = failed diff --git a/lib/ansible/plugins/action/ios.py b/lib/ansible/plugins/action/ios.py index 13dbb47ac5..2cfca1a374 100644 --- a/lib/ansible/plugins/action/ios.py +++ b/lib/ansible/plugins/action/ios.py @@ -39,6 +39,8 @@ except ImportError: class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): + del tmp # tmp no longer has any effect + socket_path = None if self._play_context.connection == 'network_cli': @@ -87,5 +89,5 @@ class ActionModule(_ActionModule): conn.send_command('exit') out = conn.get_prompt() - result = super(ActionModule, self).run(tmp, task_vars) + result = super(ActionModule, self).run(task_vars=task_vars) return result diff --git a/lib/ansible/plugins/action/ios_config.py b/lib/ansible/plugins/action/ios_config.py index 5471bcb455..bf47cef9bc 100644 --- a/lib/ansible/plugins/action/ios_config.py +++ b/lib/ansible/plugins/action/ios_config.py @@ -43,6 +43,7 @@ class ActionModule(_ActionModule): return dict(failed=True, msg=to_text(exc)) result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if self._task.args.get('backup') and result.get('__backup__'): # User requested backup and no error occurred in module. diff --git a/lib/ansible/plugins/action/iosxr.py b/lib/ansible/plugins/action/iosxr.py index c9efaeae1f..40a39b68df 100644 --- a/lib/ansible/plugins/action/iosxr.py +++ b/lib/ansible/plugins/action/iosxr.py @@ -39,6 +39,8 @@ except ImportError: class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): + del tmp # tmp no longer has any effect + socket_path = None if self._play_context.connection == 'local': @@ -92,5 +94,5 @@ class ActionModule(_ActionModule): conn.send_command('abort') out = conn.get_prompt() - result = super(ActionModule, self).run(tmp, task_vars) + result = super(ActionModule, self).run(task_vars=task_vars) return result diff --git a/lib/ansible/plugins/action/iosxr_config.py b/lib/ansible/plugins/action/iosxr_config.py index 26a3893d35..cdc2eccced 100644 --- a/lib/ansible/plugins/action/iosxr_config.py +++ b/lib/ansible/plugins/action/iosxr_config.py @@ -43,6 +43,7 @@ class ActionModule(_ActionModule): return dict(failed=True, msg=to_text(exc)) result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if self._task.args.get('backup') and result.get('__backup__'): # User requested backup and no error occurred in module. diff --git a/lib/ansible/plugins/action/ironware.py b/lib/ansible/plugins/action/ironware.py index fa8da417bb..5033af9436 100644 --- a/lib/ansible/plugins/action/ironware.py +++ b/lib/ansible/plugins/action/ironware.py @@ -40,6 +40,7 @@ except ImportError: class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): + del tmp # tmp no longer has any effect if self._play_context.connection != 'local': return dict( @@ -89,6 +90,6 @@ class ActionModule(_ActionModule): self._play_context.become = False self._play_context.become_method = None - result = super(ActionModule, self).run(tmp, task_vars) + result = super(ActionModule, self).run(task_vars=task_vars) return result diff --git a/lib/ansible/plugins/action/ironware_config.py b/lib/ansible/plugins/action/ironware_config.py index 6406d4c465..06609f1b6a 100644 --- a/lib/ansible/plugins/action/ironware_config.py +++ b/lib/ansible/plugins/action/ironware_config.py @@ -43,6 +43,7 @@ class ActionModule(_ActionModule): return dict(failed=True, msg=exc.message) result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if self._task.args.get('backup') and result.get('__backup__'): # User requested backup and no error occurred in module. diff --git a/lib/ansible/plugins/action/junos.py b/lib/ansible/plugins/action/junos.py index 2fa40a5e67..dcba154a75 100644 --- a/lib/ansible/plugins/action/junos.py +++ b/lib/ansible/plugins/action/junos.py @@ -41,9 +41,11 @@ except ImportError: class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): + del tmp # tmp no longer has any effect + module = module_loader._load_module_source(self._task.action, module_loader.find_plugin(self._task.action)) if not getattr(module, 'USE_PERSISTENT_CONNECTION', False): - return super(ActionModule, self).run(tmp, task_vars) + return super(ActionModule, self).run(task_vars=task_vars) socket_path = None @@ -95,5 +97,5 @@ class ActionModule(_ActionModule): conn.send_command('exit') out = conn.get_prompt() - result = super(ActionModule, self).run(tmp, task_vars) + result = super(ActionModule, self).run(None, task_vars) return result diff --git a/lib/ansible/plugins/action/junos_config.py b/lib/ansible/plugins/action/junos_config.py index 2b29171ded..ea0687ec34 100644 --- a/lib/ansible/plugins/action/junos_config.py +++ b/lib/ansible/plugins/action/junos_config.py @@ -44,6 +44,7 @@ class ActionModule(_ActionModule): return dict(failed=True, msg=exc.message) result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if self._task.args.get('backup') and result.get('__backup__'): # User requested backup and no error occurred in module. diff --git a/lib/ansible/plugins/action/net_banner.py b/lib/ansible/plugins/action/net_banner.py index cad73f8a26..d8617842d8 100644 --- a/lib/ansible/plugins/action/net_banner.py +++ b/lib/ansible/plugins/action/net_banner.py @@ -23,5 +23,6 @@ from ansible.plugins.action.net_base import ActionModule as _ActionModule class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect return result diff --git a/lib/ansible/plugins/action/net_base.py b/lib/ansible/plugins/action/net_base.py index 1aaa1024e5..dd0fcf6d3e 100644 --- a/lib/ansible/plugins/action/net_base.py +++ b/lib/ansible/plugins/action/net_base.py @@ -44,6 +44,8 @@ _NETCONF_SUPPORTED_PLATFORMS = frozenset(['junos', 'iosxr']) class ActionModule(ActionBase): def run(self, tmp=None, task_vars=None): + del tmp # tmp no longer has any effect + socket_path = None play_context = copy.deepcopy(self._play_context) play_context.network_os = self._get_network_os(task_vars) @@ -110,7 +112,7 @@ class ActionModule(ActionBase): if 'fail_on_missing_module' not in self._task.args: self._task.args['fail_on_missing_module'] = False - result = super(ActionModule, self).run(tmp, task_vars) + result = super(ActionModule, self).run(task_vars=task_vars) module = self._get_implementation_module(play_context.network_os, self._task.action) diff --git a/lib/ansible/plugins/action/net_config.py b/lib/ansible/plugins/action/net_config.py index a643728629..8521462607 100644 --- a/lib/ansible/plugins/action/net_config.py +++ b/lib/ansible/plugins/action/net_config.py @@ -44,6 +44,7 @@ class ActionModule(_ActionModule): return dict(failed=True, msg=exc.message) result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if self._task.args.get('backup') and result.get('__backup__'): # User requested backup and no error occurred in module. diff --git a/lib/ansible/plugins/action/net_interface.py b/lib/ansible/plugins/action/net_interface.py index a4ee4db0b6..81f46f197a 100644 --- a/lib/ansible/plugins/action/net_interface.py +++ b/lib/ansible/plugins/action/net_interface.py @@ -23,4 +23,5 @@ from ansible.plugins.action.net_base import ActionModule as _ActionModule class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect return result diff --git a/lib/ansible/plugins/action/net_l2_interface.py b/lib/ansible/plugins/action/net_l2_interface.py index a4ee4db0b6..81f46f197a 100644 --- a/lib/ansible/plugins/action/net_l2_interface.py +++ b/lib/ansible/plugins/action/net_l2_interface.py @@ -23,4 +23,5 @@ from ansible.plugins.action.net_base import ActionModule as _ActionModule class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect return result diff --git a/lib/ansible/plugins/action/net_l3_interface.py b/lib/ansible/plugins/action/net_l3_interface.py index cad73f8a26..d8617842d8 100644 --- a/lib/ansible/plugins/action/net_l3_interface.py +++ b/lib/ansible/plugins/action/net_l3_interface.py @@ -23,5 +23,6 @@ from ansible.plugins.action.net_base import ActionModule as _ActionModule class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect return result diff --git a/lib/ansible/plugins/action/net_linkagg.py b/lib/ansible/plugins/action/net_linkagg.py index a4ee4db0b6..81f46f197a 100644 --- a/lib/ansible/plugins/action/net_linkagg.py +++ b/lib/ansible/plugins/action/net_linkagg.py @@ -23,4 +23,5 @@ from ansible.plugins.action.net_base import ActionModule as _ActionModule class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect return result diff --git a/lib/ansible/plugins/action/net_lldp.py b/lib/ansible/plugins/action/net_lldp.py index cad73f8a26..d8617842d8 100644 --- a/lib/ansible/plugins/action/net_lldp.py +++ b/lib/ansible/plugins/action/net_lldp.py @@ -23,5 +23,6 @@ from ansible.plugins.action.net_base import ActionModule as _ActionModule class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect return result diff --git a/lib/ansible/plugins/action/net_lldp_interface.py b/lib/ansible/plugins/action/net_lldp_interface.py index cad73f8a26..d8617842d8 100644 --- a/lib/ansible/plugins/action/net_lldp_interface.py +++ b/lib/ansible/plugins/action/net_lldp_interface.py @@ -23,5 +23,6 @@ from ansible.plugins.action.net_base import ActionModule as _ActionModule class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect return result diff --git a/lib/ansible/plugins/action/net_logging.py b/lib/ansible/plugins/action/net_logging.py index a4ee4db0b6..81f46f197a 100644 --- a/lib/ansible/plugins/action/net_logging.py +++ b/lib/ansible/plugins/action/net_logging.py @@ -23,4 +23,5 @@ from ansible.plugins.action.net_base import ActionModule as _ActionModule class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect return result diff --git a/lib/ansible/plugins/action/net_ping.py b/lib/ansible/plugins/action/net_ping.py index 6cc78dd882..afcf49dede 100644 --- a/lib/ansible/plugins/action/net_ping.py +++ b/lib/ansible/plugins/action/net_ping.py @@ -12,4 +12,5 @@ from ansible.plugins.action.net_base import ActionModule as _ActionModule class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect return result diff --git a/lib/ansible/plugins/action/net_static_route.py b/lib/ansible/plugins/action/net_static_route.py index cad73f8a26..d8617842d8 100644 --- a/lib/ansible/plugins/action/net_static_route.py +++ b/lib/ansible/plugins/action/net_static_route.py @@ -23,5 +23,6 @@ from ansible.plugins.action.net_base import ActionModule as _ActionModule class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect return result diff --git a/lib/ansible/plugins/action/net_system.py b/lib/ansible/plugins/action/net_system.py index a4ee4db0b6..81f46f197a 100644 --- a/lib/ansible/plugins/action/net_system.py +++ b/lib/ansible/plugins/action/net_system.py @@ -23,4 +23,5 @@ from ansible.plugins.action.net_base import ActionModule as _ActionModule class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect return result diff --git a/lib/ansible/plugins/action/net_user.py b/lib/ansible/plugins/action/net_user.py index a4ee4db0b6..81f46f197a 100644 --- a/lib/ansible/plugins/action/net_user.py +++ b/lib/ansible/plugins/action/net_user.py @@ -23,4 +23,5 @@ from ansible.plugins.action.net_base import ActionModule as _ActionModule class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect return result diff --git a/lib/ansible/plugins/action/net_vlan.py b/lib/ansible/plugins/action/net_vlan.py index cad73f8a26..d8617842d8 100644 --- a/lib/ansible/plugins/action/net_vlan.py +++ b/lib/ansible/plugins/action/net_vlan.py @@ -23,5 +23,6 @@ from ansible.plugins.action.net_base import ActionModule as _ActionModule class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect return result diff --git a/lib/ansible/plugins/action/net_vrf.py b/lib/ansible/plugins/action/net_vrf.py index cad73f8a26..d8617842d8 100644 --- a/lib/ansible/plugins/action/net_vrf.py +++ b/lib/ansible/plugins/action/net_vrf.py @@ -23,5 +23,6 @@ from ansible.plugins.action.net_base import ActionModule as _ActionModule class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect return result diff --git a/lib/ansible/plugins/action/normal.py b/lib/ansible/plugins/action/normal.py index ad2c04bd50..3b73174a0c 100644 --- a/lib/ansible/plugins/action/normal.py +++ b/lib/ansible/plugins/action/normal.py @@ -30,8 +30,7 @@ class ActionModule(ActionBase): self._supports_async = True result = super(ActionModule, self).run(tmp, task_vars) - - tmp = self._connection._shell.tempdir + del tmp # tmp no longer has any effect if not result.get('skipped'): @@ -44,7 +43,7 @@ class ActionModule(ActionBase): wrap_async = self._task.async_val and not self._connection.has_native_async # do work! - result = merge_hash(result, self._execute_module(tmp=tmp, task_vars=task_vars, wrap_async=wrap_async)) + result = merge_hash(result, self._execute_module(task_vars=task_vars, wrap_async=wrap_async)) # hack to keep --verbose from showing all the setup module result # moved from setup module as now we filter out all _ansible_ from result @@ -53,6 +52,6 @@ class ActionModule(ActionBase): if not wrap_async: # remove a temporary path we created - self._remove_tmp_path(tmp) + self._remove_tmp_path(self._connection._shell.tempdir) return result diff --git a/lib/ansible/plugins/action/nxos.py b/lib/ansible/plugins/action/nxos.py index 52ceab85fd..00cadbfdc5 100644 --- a/lib/ansible/plugins/action/nxos.py +++ b/lib/ansible/plugins/action/nxos.py @@ -39,6 +39,8 @@ except ImportError: class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): + del tmp # tmp no longer has any effect + socket_path = None if self._play_context.connection == 'network_cli': @@ -92,7 +94,7 @@ class ActionModule(_ActionModule): conn.send_command('exit') out = conn.get_prompt() - result = super(ActionModule, self).run(tmp, task_vars) + result = super(ActionModule, self).run(task_vars=task_vars) return result @staticmethod diff --git a/lib/ansible/plugins/action/nxos_config.py b/lib/ansible/plugins/action/nxos_config.py index 125c777984..2d61a224e6 100644 --- a/lib/ansible/plugins/action/nxos_config.py +++ b/lib/ansible/plugins/action/nxos_config.py @@ -44,6 +44,7 @@ class ActionModule(_ActionModule): return dict(failed=True, msg=str(exc)) result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if self._task.args.get('backup') and result.get('__backup__'): # User requested backup and no error occurred in module. diff --git a/lib/ansible/plugins/action/onyx_config.py b/lib/ansible/plugins/action/onyx_config.py index b0cbc23ffa..3b84e2adb5 100644 --- a/lib/ansible/plugins/action/onyx_config.py +++ b/lib/ansible/plugins/action/onyx_config.py @@ -42,6 +42,7 @@ class ActionModule(_ActionModule): return dict(failed=True, msg=exc.message) result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if self._task.args.get('backup') and result.get('__backup__'): # User requested backup and no error occurred in module. diff --git a/lib/ansible/plugins/action/package.py b/lib/ansible/plugins/action/package.py index 54a9d9737c..0e22031805 100644 --- a/lib/ansible/plugins/action/package.py +++ b/lib/ansible/plugins/action/package.py @@ -38,8 +38,7 @@ class ActionModule(ActionBase): self._supports_async = True result = super(ActionModule, self).run(tmp, task_vars) - - tmp = self._connection._shell.tempdir + del tmp # tmp no longer has any effect module = self._task.args.get('use', 'auto') @@ -78,6 +77,6 @@ class ActionModule(ActionBase): finally: if not self._task.async_val: # remove a temporary path we created - self._remove_tmp_path(tmp) + self._remove_tmp_path(self._connection._shell.tempdir) return result diff --git a/lib/ansible/plugins/action/patch.py b/lib/ansible/plugins/action/patch.py index 12e64d31c6..d2d9dc10fd 100644 --- a/lib/ansible/plugins/action/patch.py +++ b/lib/ansible/plugins/action/patch.py @@ -35,8 +35,7 @@ class ActionModule(ActionBase): task_vars = dict() result = super(ActionModule, self).run(tmp, task_vars) - - tmp = self._connection._shell.tempdir + del tmp # tmp no longer has any effect src = self._task.args.get('src', None) remote_src = boolean(self._task.args.get('remote_src', 'no'), strict=False) @@ -54,7 +53,7 @@ class ActionModule(ActionBase): except AnsibleError as e: raise AnsibleActionFail(to_native(e)) - tmp_src = self._connection._shell.join_path(tmp, os.path.basename(src)) + tmp_src = self._connection._shell.join_path(self._connection._shell.tempdir, os.path.basename(src)) self._transfer_file(src, tmp_src) self._fixup_perms2((tmp_src,)) @@ -69,5 +68,5 @@ class ActionModule(ActionBase): except AnsibleAction as e: result.update(e.result) finally: - self._remove_tmp_path(tmp) + self._remove_tmp_path(self._connection._shell.tempdir) return result diff --git a/lib/ansible/plugins/action/pause.py b/lib/ansible/plugins/action/pause.py index 212aaab5a7..0813aecad2 100644 --- a/lib/ansible/plugins/action/pause.py +++ b/lib/ansible/plugins/action/pause.py @@ -56,6 +56,7 @@ class ActionModule(ActionBase): task_vars = dict() result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect duration_unit = 'minutes' prompt = None diff --git a/lib/ansible/plugins/action/raw.py b/lib/ansible/plugins/action/raw.py index cf43ee6994..b82ed34037 100644 --- a/lib/ansible/plugins/action/raw.py +++ b/lib/ansible/plugins/action/raw.py @@ -31,6 +31,7 @@ class ActionModule(ActionBase): self._display.warning('raw module does not support the environment keyword') result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if self._play_context.check_mode: # in --check mode, always skip this module execution diff --git a/lib/ansible/plugins/action/script.py b/lib/ansible/plugins/action/script.py index efdb9888b7..83ab129cd0 100644 --- a/lib/ansible/plugins/action/script.py +++ b/lib/ansible/plugins/action/script.py @@ -41,8 +41,7 @@ class ActionModule(ActionBase): task_vars = dict() result = super(ActionModule, self).run(tmp, task_vars) - - tmp = self._connection._shell.tempdir + del tmp # tmp no longer has any effect try: creates = self._task.args.get('creates') @@ -90,7 +89,7 @@ class ActionModule(ActionBase): if not self._play_context.check_mode: # transfer the file to a remote tmp location - tmp_src = self._connection._shell.join_path(tmp, os.path.basename(source)) + tmp_src = self._connection._shell.join_path(self._connection._shell.tempdir, os.path.basename(source)) # Convert raw_params to text for the purpose of replacing the script since # parts and tmp_src are both unicode strings and raw_params will be different @@ -134,6 +133,6 @@ class ActionModule(ActionBase): except AnsibleAction as e: result.update(e.result) finally: - self._remove_tmp_path(tmp) + self._remove_tmp_path(self._connection._shell.tempdir) return result diff --git a/lib/ansible/plugins/action/service.py b/lib/ansible/plugins/action/service.py index bdf4d32dbc..12893b2656 100644 --- a/lib/ansible/plugins/action/service.py +++ b/lib/ansible/plugins/action/service.py @@ -37,8 +37,7 @@ class ActionModule(ActionBase): self._supports_async = True result = super(ActionModule, self).run(tmp, task_vars) - - tmp = self._connection._shell.tempdir + del tmp # tmp no longer has any effect module = self._task.args.get('use', 'auto').lower() @@ -86,6 +85,6 @@ class ActionModule(ActionBase): result.update(e.result) finally: if not self._task.async_val: - self._remove_tmp_path(tmp) + self._remove_tmp_path(self._connection._shell.tempdir) return result diff --git a/lib/ansible/plugins/action/set_fact.py b/lib/ansible/plugins/action/set_fact.py index 623c6be8b0..167220fe0b 100644 --- a/lib/ansible/plugins/action/set_fact.py +++ b/lib/ansible/plugins/action/set_fact.py @@ -33,6 +33,7 @@ class ActionModule(ActionBase): task_vars = dict() result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect facts = dict() diff --git a/lib/ansible/plugins/action/set_stats.py b/lib/ansible/plugins/action/set_stats.py index c0a55878be..6ccb12fd76 100644 --- a/lib/ansible/plugins/action/set_stats.py +++ b/lib/ansible/plugins/action/set_stats.py @@ -34,6 +34,7 @@ class ActionModule(ActionBase): task_vars = dict() result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect stats = {'data': {}, 'per_host': False, 'aggregate': True} diff --git a/lib/ansible/plugins/action/shell.py b/lib/ansible/plugins/action/shell.py index da0385824b..b2ebe17497 100644 --- a/lib/ansible/plugins/action/shell.py +++ b/lib/ansible/plugins/action/shell.py @@ -11,6 +11,8 @@ from ansible.utils.vars import merge_hash class ActionModule(ActionBase): def run(self, tmp=None, task_vars=None): + del tmp # tmp no longer has any effect + # Shell module is implemented via command self._task.action = 'command' self._task.args['_uses_shell'] = True diff --git a/lib/ansible/plugins/action/sros.py b/lib/ansible/plugins/action/sros.py index ae044d636f..3bff1b7a30 100644 --- a/lib/ansible/plugins/action/sros.py +++ b/lib/ansible/plugins/action/sros.py @@ -37,6 +37,7 @@ except ImportError: class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): + del tmp # tmp no longer has any effect if self._play_context.connection == 'network_cli': provider = self._task.args.get('provider', {}) @@ -69,5 +70,5 @@ class ActionModule(_ActionModule): else: return {'failed': True, 'msg': 'Connection type %s is not valid for this module' % self._play_context.connection} - result = super(ActionModule, self).run(tmp, task_vars) + result = super(ActionModule, self).run(task_vars=task_vars) return result diff --git a/lib/ansible/plugins/action/sros_config.py b/lib/ansible/plugins/action/sros_config.py index 1b6902ca1a..aeb6468c9e 100644 --- a/lib/ansible/plugins/action/sros_config.py +++ b/lib/ansible/plugins/action/sros_config.py @@ -43,6 +43,7 @@ class ActionModule(_ActionModule): return dict(failed=True, msg=exc.message) result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if self._task.args.get('backup') and result.get('__backup__'): # User requested backup and no error occurred in module. diff --git a/lib/ansible/plugins/action/synchronize.py b/lib/ansible/plugins/action/synchronize.py index cac7f59c93..54b053cb0e 100644 --- a/lib/ansible/plugins/action/synchronize.py +++ b/lib/ansible/plugins/action/synchronize.py @@ -164,6 +164,7 @@ class ActionModule(ActionBase): _tmp_args = self._task.args.copy() result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect # Store remote connection type self._remote_transport = self._connection.transport diff --git a/lib/ansible/plugins/action/telnet.py b/lib/ansible/plugins/action/telnet.py index eb3883a3df..81de2a3383 100644 --- a/lib/ansible/plugins/action/telnet.py +++ b/lib/ansible/plugins/action/telnet.py @@ -22,6 +22,7 @@ class ActionModule(ActionBase): self._display.warning('The telnet task does not support the environment keyword') result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if self._play_context.check_mode: # in --check mode, always skip this module execution diff --git a/lib/ansible/plugins/action/template.py b/lib/ansible/plugins/action/template.py index c25940a0ba..71bcb8da9d 100644 --- a/lib/ansible/plugins/action/template.py +++ b/lib/ansible/plugins/action/template.py @@ -41,8 +41,7 @@ class ActionModule(ActionBase): task_vars = dict() result = super(ActionModule, self).run(tmp, task_vars) - - tmp = self._connection._shell.tempdir + del tmp # tmp no longer has any effect source = self._task.args.get('src', None) dest = self._task.args.get('dest', None) @@ -156,13 +155,13 @@ class ActionModule(ActionBase): loader=self._loader, templar=self._templar, shared_loader_obj=self._shared_loader_obj) - result.update(copy_action.run(task_vars=task_vars, tmp=tmp)) + result.update(copy_action.run(task_vars=task_vars)) finally: shutil.rmtree(local_tempdir) except AnsibleAction as e: result.update(e.result) finally: - self._remove_tmp_path(tmp) + self._remove_tmp_path(self._connection._shell.tempdir) return result diff --git a/lib/ansible/plugins/action/unarchive.py b/lib/ansible/plugins/action/unarchive.py index fdcb59aef9..e0610f93b2 100644 --- a/lib/ansible/plugins/action/unarchive.py +++ b/lib/ansible/plugins/action/unarchive.py @@ -36,8 +36,7 @@ class ActionModule(ActionBase): task_vars = dict() result = super(ActionModule, self).run(tmp, task_vars) - - tmp = self._connection._shell.tempdir + del tmp # tmp no longer has any effect source = self._task.args.get('src', None) dest = self._task.args.get('dest', None) @@ -85,7 +84,7 @@ class ActionModule(ActionBase): if not remote_src: # transfer the file to a remote tmp location - tmp_src = self._connection._shell.join_path(tmp, 'source') + tmp_src = self._connection._shell.join_path(self._connection._shell.tempdir, 'source') self._transfer_file(source, tmp_src) # handle diff mode client side @@ -93,7 +92,7 @@ class ActionModule(ActionBase): if not remote_src: # fix file permissions when the copy is done as a different user - self._fixup_perms2((tmp, tmp_src)) + self._fixup_perms2((self._connection._shell.tempdir, tmp_src)) # Build temporary module_args. new_module_args = self._task.args.copy() new_module_args.update( @@ -121,5 +120,5 @@ class ActionModule(ActionBase): except AnsibleAction as e: result.update(e.result) finally: - self._remove_tmp_path(tmp) + self._remove_tmp_path(self._connection._shell.tempdir) return result diff --git a/lib/ansible/plugins/action/vyos.py b/lib/ansible/plugins/action/vyos.py index 965cd75cb0..5e12dffc06 100644 --- a/lib/ansible/plugins/action/vyos.py +++ b/lib/ansible/plugins/action/vyos.py @@ -39,6 +39,8 @@ except ImportError: class ActionModule(_ActionModule): def run(self, tmp=None, task_vars=None): + del tmp # tmp no longer has any effect + socket_path = None if self._play_context.connection == 'network_cli': @@ -83,5 +85,5 @@ class ActionModule(_ActionModule): conn.send_command('abort') out = conn.get_prompt() - result = super(ActionModule, self).run(tmp, task_vars) + result = super(ActionModule, self).run(task_vars=task_vars) return result diff --git a/lib/ansible/plugins/action/vyos_config.py b/lib/ansible/plugins/action/vyos_config.py index f8e0686224..2c780b10de 100644 --- a/lib/ansible/plugins/action/vyos_config.py +++ b/lib/ansible/plugins/action/vyos_config.py @@ -44,6 +44,7 @@ class ActionModule(_ActionModule): return dict(failed=True, msg=exc.message) result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if self._task.args.get('backup') and result.get('__backup__'): # User requested backup and no error occurred in module. diff --git a/lib/ansible/plugins/action/wait_for_connection.py b/lib/ansible/plugins/action/wait_for_connection.py index 46cfba5b73..1f777e8b81 100644 --- a/lib/ansible/plugins/action/wait_for_connection.py +++ b/lib/ansible/plugins/action/wait_for_connection.py @@ -74,6 +74,7 @@ class ActionModule(ActionBase): return dict(skipped=True) result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect def ping_module_test(connect_timeout): ''' Test ping module, if available ''' @@ -86,9 +87,9 @@ class ActionModule(ActionBase): # Use win_ping on winrm/powershell, else use ping if hasattr(self._connection, '_shell_type') and self._connection._shell_type == 'powershell': - ping_result = self._execute_module(module_name='win_ping', module_args=dict(), tmp=tmp, task_vars=task_vars) + ping_result = self._execute_module(module_name='win_ping', module_args=dict(), task_vars=task_vars) else: - ping_result = self._execute_module(module_name='ping', module_args=dict(), tmp=tmp, task_vars=task_vars) + ping_result = self._execute_module(module_name='ping', module_args=dict(), task_vars=task_vars) # Test module output if ping_result['ping'] != 'pong': diff --git a/lib/ansible/plugins/action/win_copy.py b/lib/ansible/plugins/action/win_copy.py index b0be7ff507..a29ef4e9e3 100644 --- a/lib/ansible/plugins/action/win_copy.py +++ b/lib/ansible/plugins/action/win_copy.py @@ -281,8 +281,7 @@ class ActionModule(ActionBase): copy_result = self._execute_module(module_name="copy", module_args=copy_args, - task_vars=task_vars, - tmp=tmp) + task_vars=task_vars) return copy_result @@ -325,8 +324,7 @@ class ActionModule(ActionBase): module_return = self._execute_module(module_name='copy', module_args=copy_args, - task_vars=task_vars, - tmp=tmp) + task_vars=task_vars) os.removedirs(os.path.dirname(zip_path)) return module_return @@ -336,6 +334,7 @@ class ActionModule(ActionBase): task_vars = dict() result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect source = self._task.args.get('src', None) content = self._task.args.get('content', None) @@ -482,22 +481,21 @@ class ActionModule(ActionBase): query_args.pop('content', None) query_return = self._execute_module(module_args=query_args, - task_vars=task_vars, - tmp=tmp) + task_vars=task_vars) if query_return.get('failed') is True: result.update(query_return) return result - if len(query_return['files']) > 0 or len(query_return['directories']) > 0 and tmp is None: - tmp = self._make_tmp_path() + if len(query_return['files']) > 0 or len(query_return['directories']) > 0 and self._connection._shell.tempdir is None: + self._connection._shell.tempdir = self._make_tmp_path() if len(query_return['files']) == 1 and len(query_return['directories']) == 0: # we only need to copy 1 file, don't mess around with zips file_src = query_return['files'][0]['src'] file_dest = query_return['files'][0]['dest'] copy_result = self._copy_single_file(file_src, dest, file_dest, - task_vars, tmp) + task_vars, self._connection._shell.tempdir) result['changed'] = True if copy_result.get('failed') is True: @@ -509,7 +507,7 @@ class ActionModule(ActionBase): # TODO: handle symlinks result.update(self._copy_zip_file(dest, source_files['files'], source_files['directories'], - task_vars, tmp)) + task_vars, self._connection._shell.tempdir)) result['changed'] = True else: # no operations need to occur @@ -518,5 +516,5 @@ class ActionModule(ActionBase): # remove the content temp file and remote tmp file if it was created self._remove_tempfile_if_content_defined(content, content_tempfile) - self._remove_tmp_path(tmp) + self._remove_tmp_path(self._connection._shell.tempdir) return result diff --git a/lib/ansible/plugins/action/win_reboot.py b/lib/ansible/plugins/action/win_reboot.py index e2f231eee5..eccce679a1 100644 --- a/lib/ansible/plugins/action/win_reboot.py +++ b/lib/ansible/plugins/action/win_reboot.py @@ -73,6 +73,7 @@ class ActionModule(ActionBase): task_vars = dict() result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect if result.get('skipped', False) or result.get('failed', False): return result diff --git a/lib/ansible/plugins/action/win_updates.py b/lib/ansible/plugins/action/win_updates.py index 4ee48f056d..ad6d1ad001 100644 --- a/lib/ansible/plugins/action/win_updates.py +++ b/lib/ansible/plugins/action/win_updates.py @@ -133,6 +133,7 @@ class ActionModule(ActionBase): self._supports_async = True result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect category_names = self._task.args.get('category_names', [ 'CriticalUpdates',