diff options
author | Jordan Borean <jborean93@gmail.com> | 2019-04-17 09:01:28 +1000 |
---|---|---|
committer | Toshio Kuratomi <a.badger@gmail.com> | 2019-04-17 06:56:49 -0700 |
commit | ab725bb86ef9cbd109fdf0ebac3812ef696e396b (patch) | |
tree | e1db0454526fa2a3c6660fea5f6e6361d8b28630 /lib | |
parent | ad953171eba35bb4e7c458d4511274d53e40231a (diff) | |
download | ansible-ab725bb86ef9cbd109fdf0ebac3812ef696e396b.tar.gz |
psrp - Fix raw and script tests for connection plugin (#55357)
* psrp - Fix raw and script tests for connection plugin
* Fix error propagation with raw in psrp
* uncomment test
(cherry picked from commit fdf9df89f5c5506e43dae19bce4eba29625f1869)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ansible/plugins/connection/psrp.py | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/lib/ansible/plugins/connection/psrp.py b/lib/ansible/plugins/connection/psrp.py index 00fb08af41..8b8e2b284a 100644 --- a/lib/ansible/plugins/connection/psrp.py +++ b/lib/ansible/plugins/connection/psrp.py @@ -282,9 +282,10 @@ class Connection(ConnectionBase): else: display.vvv("PSRP: EXEC %s" % script, host=self._psrp_host) else: - # in other cases we want to execute the cmd as the script - script = cmd - display.vvv("PSRP: EXEC %s" % script, host=self._psrp_host) + # In other cases we want to execute the cmd as the script. We add on the 'exit $LASTEXITCODE' to ensure the + # rc is propagated back to the connection plugin. + script = to_text(u"%s\nexit $LASTEXITCODE" % cmd) + display.vvv(u"PSRP: EXEC %s" % script, host=self._psrp_host) rc, stdout, stderr = self._exec_psrp_script(script, in_data) return rc, stdout, stderr @@ -574,29 +575,29 @@ if ($bytes_read -gt 0) { stdout_list.append(output_msg) - stdout = u"\r\n".join(stdout_list) if len(self.host.ui.stdout) > 0: - stdout += u"\r\n" + u"".join(self.host.ui.stdout) + stdout_list += self.host.ui.stdout + stdout = u"\r\n".join(stdout_list) stderr_list = [] for error in pipeline.streams.error: # the error record is not as fully fleshed out like we usually get # in PS, we will manually create it here - error_msg = "%s : %s\r\n" \ - "%s\r\n" \ + command_name = "%s : " % error.command_name if error.command_name else '' + position = "%s\r\n" % error.invocation_position_message if error.invocation_position_message else '' + error_msg = "%s%s\r\n%s" \ " + CategoryInfo : %s\r\n" \ " + FullyQualifiedErrorId : %s" \ - % (error.command_name, str(error), - error.invocation_position_message, error.message, - error.fq_error) + % (command_name, str(error), position, + error.message, error.fq_error) stacktrace = error.script_stacktrace if self._play_context.verbosity >= 3 and stacktrace is not None: error_msg += "\r\nStackTrace:\r\n%s" % stacktrace stderr_list.append(error_msg) - stderr = "\r\n".join(stderr_list) if len(self.host.ui.stderr) > 0: - stderr += "\r\n" + "".join(self.host.ui.stderr) + stderr_list += self.host.ui.stderr + stderr = u"\r\n".join([to_text(o) for o in stderr_list]) display.vvvvv("PSRP RC: %d" % rc, host=self._psrp_host) display.vvvvv("PSRP STDOUT: %s" % stdout, host=self._psrp_host) |