From d0fbd30f319d7f936783cbdf2209a918096f6d87 Mon Sep 17 00:00:00 2001 From: phanes Date: Fri, 17 Feb 2023 03:21:24 -0500 Subject: [PATCH] prep for point release --- sample/components/independent_test_1.bash | 11 ++++--- sample/environments/rex.variables | 1 + sample/logs/2023-02-15_18:27:40.stderr.log | 2 -- sample/logs/2023-02-15_18:27:40.stdout.log | 0 sample/logs/2023-02-15_18:29:35.stderr.log | 1 - sample/logs/2023-02-15_18:29:35.stdout.log | 0 sample/logs/2023-02-15_18:30:48.stderr.log | 1 - sample/logs/2023-02-15_18:30:48.stdout.log | 0 sample/plans/atomic.plan | 0 sample/plans/test.plan | 0 sample/rex.config | 2 +- sample/shells/shells.definitions | 0 sample/units/.new.units.swp | Bin 12288 -> 12288 bytes sample/units/new.units | 0 src/lcpex/liblcpex.cpp | 22 ++++++-------- src/lcpex/liblcpex.h | 8 +++--- .../string_expansion/string_expansion.cpp | 2 ++ src/lcpex/vpty/libclpex_tty.cpp | 16 ++++------- src/lcpex/vpty/libclpex_tty.h | 4 +-- src/plan/Task.cpp | 27 +++++++++++------- src/plan/Task.h | 2 +- 21 files changed, 48 insertions(+), 51 deletions(-) delete mode 100644 sample/logs/2023-02-15_18:27:40.stderr.log delete mode 100644 sample/logs/2023-02-15_18:27:40.stdout.log delete mode 100644 sample/logs/2023-02-15_18:29:35.stderr.log delete mode 100644 sample/logs/2023-02-15_18:29:35.stdout.log delete mode 100644 sample/logs/2023-02-15_18:30:48.stderr.log delete mode 100644 sample/logs/2023-02-15_18:30:48.stdout.log mode change 100644 => 100755 sample/plans/atomic.plan mode change 100644 => 100755 sample/plans/test.plan mode change 100644 => 100755 sample/rex.config mode change 100644 => 100755 sample/shells/shells.definitions mode change 100644 => 100755 sample/units/new.units diff --git a/sample/components/independent_test_1.bash b/sample/components/independent_test_1.bash index 5d3ae4e..32dd3e9 100755 --- a/sample/components/independent_test_1.bash +++ b/sample/components/independent_test_1.bash @@ -1,5 +1,8 @@ -#!/bin/bash -echo "This is an independent test. It does not depend on other tests." -echo "Environment file check: TEST_VAR from environment file is set to: $TEST_VAR" +#!/usr/bin/bash +# +echo test from script +/usr/bin/dialog --title "This should be one argument" --inputbox "Enter your name:" 0 0 -exit $? + + +env diff --git a/sample/environments/rex.variables b/sample/environments/rex.variables index ab2d82b..235542f 100755 --- a/sample/environments/rex.variables +++ b/sample/environments/rex.variables @@ -8,4 +8,5 @@ set -a echo "variables file says hello and set a variable named TEST_VAR" TEST_VAR="999" +TERM=xterm diff --git a/sample/logs/2023-02-15_18:27:40.stderr.log b/sample/logs/2023-02-15_18:27:40.stderr.log deleted file mode 100644 index 48fe819..0000000 --- a/sample/logs/2023-02-15_18:27:40.stderr.log +++ /dev/null @@ -1,2 +0,0 @@ -lcpex: setgid failed: Operation not permitted -lcpex: Aborting: Setting GID failed: bagira/bagira diff --git a/sample/logs/2023-02-15_18:27:40.stdout.log b/sample/logs/2023-02-15_18:27:40.stdout.log deleted file mode 100644 index e69de29..0000000 diff --git a/sample/logs/2023-02-15_18:29:35.stderr.log b/sample/logs/2023-02-15_18:29:35.stderr.log deleted file mode 100644 index 45df159..0000000 --- a/sample/logs/2023-02-15_18:29:35.stderr.log +++ /dev/null @@ -1 +0,0 @@ -/usr/bin/bash: line 1: /home/phanes/development/internal/rex-rewrite/sample/environments/rex.variables: Permission denied diff --git a/sample/logs/2023-02-15_18:29:35.stdout.log b/sample/logs/2023-02-15_18:29:35.stdout.log deleted file mode 100644 index e69de29..0000000 diff --git a/sample/logs/2023-02-15_18:30:48.stderr.log b/sample/logs/2023-02-15_18:30:48.stderr.log deleted file mode 100644 index 45df159..0000000 --- a/sample/logs/2023-02-15_18:30:48.stderr.log +++ /dev/null @@ -1 +0,0 @@ -/usr/bin/bash: line 1: /home/phanes/development/internal/rex-rewrite/sample/environments/rex.variables: Permission denied diff --git a/sample/logs/2023-02-15_18:30:48.stdout.log b/sample/logs/2023-02-15_18:30:48.stdout.log deleted file mode 100644 index e69de29..0000000 diff --git a/sample/plans/atomic.plan b/sample/plans/atomic.plan old mode 100644 new mode 100755 diff --git a/sample/plans/test.plan b/sample/plans/test.plan old mode 100644 new mode 100755 diff --git a/sample/rex.config b/sample/rex.config old mode 100644 new mode 100755 index 6a7aa6b..7ef61b9 --- a/sample/rex.config +++ b/sample/rex.config @@ -1,6 +1,6 @@ { "config": { - "project_root": "/home/phanes/development/internal/rex-rewrite/sample", + "project_root": "/tmp/sample", "units_path": "units/", "logs_path": "logs/", "shells_path": "shells/shells.definitions", diff --git a/sample/shells/shells.definitions b/sample/shells/shells.definitions old mode 100644 new mode 100755 diff --git a/sample/units/.new.units.swp b/sample/units/.new.units.swp index 39ec5cd06b6c55e249a88646a08f649f366df174..2aad9e79fb076b4f1a62c5c8615bee5adfc161e2 100644 GIT binary patch delta 91 zcmZojXh@JwG6?hZRj|}EU;qLE28ICh_sQi_3=I2qI3`L5vgnuO7Hpgn$~^Ia3VUfu rnyv*e!{!gnA~LK(ybKI&lQ|WVS=)fD*3E?qLcA=sK(M)8w~`3}QcxJu delta 124 zcmZojXh@JwG6?hZRj|}EU;qLE28JVxUnVEyFJstoPG+KXphjImMq*xSv3^QwS!zyx zL2hbZiGF5YNorAEVvc@MYK3l5YI#v+N$SReP-gbhk~Ccl-q6h-m_=k*g?Skm+9z`= aB(t^ySxuV@6@++M(h`$XH@E9nG64V^rzk=I diff --git a/sample/units/new.units b/sample/units/new.units old mode 100644 new mode 100755 diff --git a/src/lcpex/liblcpex.cpp b/src/lcpex/liblcpex.cpp index 75da59a..fca54ff 100644 --- a/src/lcpex/liblcpex.cpp +++ b/src/lcpex/liblcpex.cpp @@ -36,15 +36,15 @@ std::string prefix_generator( // it's not a shell command, so we can just execute it directly prefix = command; } - std::cout << "prefix: " << prefix << std::endl; + std::cout << "LAUNCHER: " << prefix << std::endl; return prefix; } int lcpex( std::string command, - std::string stdout_log_file, - std::string stderr_log_file, + FILE * stdout_log_fh, + FILE * stderr_log_fh, bool context_override, std::string context_user, std::string context_group, @@ -72,11 +72,11 @@ int lcpex( // if we are forcing a pty, then we will use the vpty library if( force_pty ) { - return exec_pty( command, stdout_log_file, stderr_log_file, context_override, context_user, context_group, supply_environment ); + return exec_pty( command, stdout_log_fh, stderr_log_fh, context_override, context_user, context_group, supply_environment ); } // otherwise, we will use the execute function - return execute( command, stdout_log_file, stderr_log_file, context_override, context_user, context_group, supply_environment ); + return execute( command, stdout_log_fh, stderr_log_fh, context_override, context_user, context_group, supply_environment ); } /** @@ -161,8 +161,8 @@ void run_child_process(bool context_override, const char* context_user, const ch int execute( std::string command, - std::string stdout_log_file, - std::string stderr_log_file, + FILE * stdout_log_fh, + FILE * stderr_log_fh, bool context_override, std::string context_user, std::string context_group, @@ -183,10 +183,6 @@ int execute( clearenv(); } - // open file handles to the two log files we need to create for each execution - FILE * stdout_log_fh = fopen( stdout_log_file.c_str(), "a+" ); - FILE * stderr_log_fh = fopen( stderr_log_file.c_str(), "a+" ); - // create the pipes for the child process to write and read from using its stdin/stdout/stderr int fd_child_stdout_pipe[2]; int fd_child_stderr_pipe[2]; @@ -325,9 +321,7 @@ int execute( // wait for child to exit, capture status waitpid(pid, &status, 0); - // close the log file handles - fclose(stdout_log_fh); - fclose(stderr_log_fh); + if WIFEXITED(status) { return WEXITSTATUS(status); } else { diff --git a/src/lcpex/liblcpex.h b/src/lcpex/liblcpex.h index bbfea27..f958661 100644 --- a/src/lcpex/liblcpex.h +++ b/src/lcpex/liblcpex.h @@ -39,8 +39,8 @@ */ int execute( std::string command, - std::string stdout_log_file, - std::string stderr_log_file, + FILE * stdout_log_fh, + FILE * stderr_log_fh, bool context_override, std::string context_user, std::string context_group, @@ -76,8 +76,8 @@ int execute( */ int lcpex( std::string command, - std::string stdout_log_file, - std::string stderr_log_file, + FILE * stdout_log_fh, + FILE * stderr_log_fh, bool context_override, std::string context_user, std::string context_group, diff --git a/src/lcpex/string_expansion/string_expansion.cpp b/src/lcpex/string_expansion/string_expansion.cpp index 926bc0b..bb928d4 100644 --- a/src/lcpex/string_expansion/string_expansion.cpp +++ b/src/lcpex/string_expansion/string_expansion.cpp @@ -1,5 +1,7 @@ #include "string_expansion.h" + + // convert a string to a char** representing our artificial argv to be consumed by execvp char ** expand_env(const std::string& var, int flags ) { diff --git a/src/lcpex/vpty/libclpex_tty.cpp b/src/lcpex/vpty/libclpex_tty.cpp index 027e313..9940bde 100644 --- a/src/lcpex/vpty/libclpex_tty.cpp +++ b/src/lcpex/vpty/libclpex_tty.cpp @@ -83,7 +83,7 @@ void run_child_process( int fd_child_stderr_pipe[2], char * processed_command[], // execute the dang command, print to stdout, stderr (of parent), and dump to file for each!!!! // (and capture exit code in parent) - int exit_code = execvp(processed_command[0], processed_command); + int exit_code = execvp( processed_command[0], processed_command ); safe_perror("failed on execvp in child", ttyOrig ); exit(exit_code); } @@ -94,8 +94,8 @@ void run_child_process( int fd_child_stderr_pipe[2], char * processed_command[], // - TEE child stdout/stderr to parent stdout/stderr int exec_pty( std::string command, - std::string stdout_log_file, - std::string stderr_log_file, + FILE * stdout_log_fh, + FILE * stderr_log_fh, bool context_override, std::string context_user, std::string context_group, @@ -112,16 +112,13 @@ int exec_pty( } // turn our command string into something execvp can consume - char ** processed_command = expand_env(command ); - - // open file handles to the two log files we need to create for each execution - FILE * stdout_log_fh = fopen( stdout_log_file.c_str(), "a+" ); - FILE * stderr_log_fh = fopen( stderr_log_file.c_str(), "a+" ); + char ** processed_command = expand_env( command ); if ( stdout_log_fh == NULL ) { safe_perror( "Error opening STDOUT log file. Aborting.", &ttyOrig ); exit( 1 ); } + if ( stderr_log_fh == NULL ) { safe_perror( "Error opening STDERR log file. Aborting.", &ttyOrig ); exit( 1 ); @@ -277,9 +274,6 @@ int exec_pty( // wait for child to exit, capture status waitpid(pid, &status, 0); - // close the log file handles - fclose(stdout_log_fh); - fclose(stderr_log_fh); ttyResetExit( &ttyOrig); if WIFEXITED(status) { return WEXITSTATUS(status); diff --git a/src/lcpex/vpty/libclpex_tty.h b/src/lcpex/vpty/libclpex_tty.h index 452078e..328cf8f 100644 --- a/src/lcpex/vpty/libclpex_tty.h +++ b/src/lcpex/vpty/libclpex_tty.h @@ -38,8 +38,8 @@ */ int exec_pty( std::string command, - std::string stdout_log_file, - std::string stderr_log_file, + FILE * stdout_log_fh, + FILE * stderr_log_fh, bool context_override, std::string context_user, std::string context_group, diff --git a/src/plan/Task.cpp b/src/plan/Task.cpp index 108cb95..c6d443f 100644 --- a/src/plan/Task.cpp +++ b/src/plan/Task.cpp @@ -307,7 +307,7 @@ bool createDirectory(const std::string& path) { return true; } -bool Task::prepare_logs( std::string task_name, std::string logs_root, std::string timestamp ) +bool Task::prepare_logs( std::string task_name, std::string logs_root ) { std::string full_path = logs_root + "/" + task_name; bool ret = false; @@ -407,20 +407,25 @@ void Task::execute( Conf * configuration ) logs_root = configuration->get_project_root() + "/" + logs_root; } - std::string timestamp = get_8601(); + // set these first so the pre-execution logs get there. /* * create the logs dir here */ - if (! this->prepare_logs( task_name, logs_root, timestamp ) ) + if (! this->prepare_logs( task_name, logs_root ) ) { throw TaskException("Could not prepare logs for task execution at '" + logs_root + "'."); } + std::string timestamp = get_8601(); std::string stdout_log_file = logs_root + "/" + task_name + "/" + timestamp + ".stdout.log"; std::string stderr_log_file = logs_root + "/" + task_name + "/" + timestamp + ".stderr.log"; + // open file handles to the two log files we need to create for each execution + FILE * stdout_log_fh = fopen( stdout_log_file.c_str(), "a+" ); + FILE * stderr_log_fh = fopen( stderr_log_file.c_str(), "a+" ); + // check if working directory is to be set if ( override_working_dir ) { @@ -443,8 +448,8 @@ void Task::execute( Conf * configuration ) int return_code = lcpex( command, - stdout_log_file, - stderr_log_file, + stdout_log_fh, + stderr_log_fh, set_user_context, user, group, @@ -457,7 +462,6 @@ void Task::execute( Conf * configuration ) environment_file ); - // ********************************************** // d[0] Error Code Check // ********************************************** @@ -513,8 +517,8 @@ void Task::execute( Conf * configuration ) this->slog.log_task( E_INFO, task_name, "Executing rectification: " + rectifier + "." ); int rectifier_error = lcpex( rectifier, - stdout_log_file, - stderr_log_file, + stdout_log_fh, + stderr_log_fh, set_user_context, user, group, @@ -565,8 +569,8 @@ void Task::execute( Conf * configuration ) int retry_code = lcpex( command, - stdout_log_file, - stderr_log_file, + stdout_log_fh, + stderr_log_fh, set_user_context, user, group, @@ -618,4 +622,7 @@ void Task::execute( Conf * configuration ) // end d[1] Rectify Check // ********************************************** } + // close the log file handles + fclose(stdout_log_fh); + fclose(stderr_log_fh); } \ No newline at end of file diff --git a/src/plan/Task.h b/src/plan/Task.h index 1a21bff..3414efa 100644 --- a/src/plan/Task.h +++ b/src/plan/Task.h @@ -47,7 +47,7 @@ class Task // the readiness of this task to execute bool defined; - bool prepare_logs( std::string task_name, std::string logs_root, std::string timestamp ); + bool prepare_logs( std::string task_name, std::string logs_root ); public: