parent
004addd2b4
commit
d0fbd30f31
|
@ -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
|
||||
|
|
|
@ -8,4 +8,5 @@ set -a
|
|||
|
||||
echo "variables file says hello and set a variable named TEST_VAR"
|
||||
TEST_VAR="999"
|
||||
TERM=xterm
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
lcpex: setgid failed: Operation not permitted
|
||||
lcpex: Aborting: Setting GID failed: bagira/bagira
|
|
@ -1 +0,0 @@
|
|||
/usr/bin/bash: line 1: /home/phanes/development/internal/rex-rewrite/sample/environments/rex.variables: Permission denied
|
|
@ -1 +0,0 @@
|
|||
/usr/bin/bash: line 1: /home/phanes/development/internal/rex-rewrite/sample/environments/rex.variables: Permission denied
|
|
@ -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",
|
||||
|
|
Binary file not shown.
|
@ -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 {
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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 )
|
||||
{
|
||||
|
|
|
@ -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,
|
||||
|
@ -114,14 +114,11 @@ 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+" );
|
||||
|
||||
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);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue