diff --git a/.gitignore b/.gitignore index b344888..1e141da 100644 --- a/.gitignore +++ b/.gitignore @@ -14,4 +14,5 @@ dist *.stackdump dist/ .venv*/ -venv/ \ No newline at end of file +venv/ +package/build/ \ No newline at end of file diff --git a/package/cloudshell/cm/customscript/customscript_shell.py b/package/cloudshell/cm/customscript/customscript_shell.py index 38f81ef..029bf5f 100644 --- a/package/cloudshell/cm/customscript/customscript_shell.py +++ b/package/cloudshell/cm/customscript/customscript_shell.py @@ -52,7 +52,7 @@ def execute_script(self, command_context, script_conf_json, cancellation_context self._connect(service, cancel_sampler, script_conf.timeout_minutes) logger.info('Done.') - service.execute(script_file, script_conf.host_conf.parameters, output_writer, script_conf.print_output) + return service.execute(script_file, script_conf.host_conf.parameters, output_writer, script_conf.print_output) def _download_script(self, script_repo, logger, cancel_sampler, verify_certificate): """ diff --git a/package/cloudshell/cm/customscript/domain/linux_script_executor.py b/package/cloudshell/cm/customscript/domain/linux_script_executor.py index a9253d8..ef5b702 100644 --- a/package/cloudshell/cm/customscript/domain/linux_script_executor.py +++ b/package/cloudshell/cm/customscript/domain/linux_script_executor.py @@ -86,9 +86,9 @@ def execute(self, script_file, env_vars, output_writer, print_output=True): self.logger.info('Done.') self.logger.info('Running "%s" on target machine ...' % script_file.name) - self.run_script(tmp_folder, script_file, env_vars, output_writer, print_output) + output = self.run_script(tmp_folder, script_file, env_vars, output_writer, self.logger, print_output) self.logger.info('Done.') - + return output finally: self.logger.info('Deleting "%s" folder from target machine ...' % tmp_folder) self.delete_temp_folder(tmp_folder) @@ -122,13 +122,14 @@ def copy_script(self, tmp_folder, script_file): scp.close() fl.close() - def run_script(self, tmp_folder, script_file, env_vars, output_writer, print_output=True): + def run_script(self, tmp_folder, script_file, env_vars, output_writer, logger, print_output=True): """ :type tmp_folder: str :type script_file: ScriptFile :type env_vars: dict :type output_writer: ReservationOutputWriter :type print_output: bool + :type logger: logging.Logger """ code = '' for key, value in (env_vars or {}).items(): @@ -138,11 +139,20 @@ def run_script(self, tmp_folder, script_file, env_vars, output_writer, print_out code += 'sh '+tmp_folder+'/'+script_file.name print(code) result = self._run_cancelable(code) + logger.info("std_out:") + logger.info(result.std_out) + if result.std_err: + logger.error("std_error:") + logger.error(result.std_err) if print_output: - output_writer.write(result.std_out) - output_writer.write(result.std_err) + try: + output_writer.write(result.std_out) + output_writer.write(result.std_err) + except Exception as e: + logger.error(f"Issue printing output to console. {type(e).__name__}: {str(e)}") if not result.success: raise Exception(ErrorMsg.RUN_SCRIPT % result.std_err) + return result.std_out def delete_temp_folder(self, tmp_folder): """ diff --git a/package/version.txt b/package/version.txt index e3a4f19..fae692e 100644 --- a/package/version.txt +++ b/package/version.txt @@ -1 +1 @@ -2.2.0 \ No newline at end of file +2.2.1 \ No newline at end of file