diff --git a/src/resmom/mom_main.c b/src/resmom/mom_main.c index 9f07badcbe..d7027ec4ad 100644 --- a/src/resmom/mom_main.c +++ b/src/resmom/mom_main.c @@ -192,6 +192,7 @@ char *path_undeliv; char *path_aux; char *path_home = (char *)PBS_SERVER_HOME; char *mom_home; +char mom_ipaddr[INET_ADDRSTRLEN]; bool use_path_home = false; @@ -1645,7 +1646,8 @@ void add_diag_header( { output << "\nHost: " << mom_short_name << "/" << mom_host << " Version: "; - output << PACKAGE_VERSION << " PID: " << getpid() << "\n"; + output << PACKAGE_VERSION << " IP address: " << mom_ipaddr; + output << " PID: " << getpid() << "\n"; } /* END add_diag_header() */ @@ -4897,6 +4899,8 @@ int setup_program_environment(void) char *ptr; /* local tmp variable */ int network_retries = 0; + struct sockaddr_in network_addr; + /* must be started with real and effective uid of 0 */ if (IamRoot() == 0) { @@ -5075,6 +5079,12 @@ int setup_program_environment(void) hostc = 1; } + // Get external IP address of local node + if (get_local_address(network_addr) == 0) + { + inet_ntop(AF_INET, &(network_addr.sin_addr), mom_ipaddr, INET_ADDRSTRLEN); + } + if (!multi_mom) { log_init(NULL, mom_host); diff --git a/src/test/mom_main/scaffolding.c b/src/test/mom_main/scaffolding.c index 2da9eece4a..0f784c92bc 100644 --- a/src/test/mom_main/scaffolding.c +++ b/src/test/mom_main/scaffolding.c @@ -1146,3 +1146,8 @@ int read_all_devices() bool get_cray_taskstats; void read_rur_stats_file(const char *basepath) {} + +int get_local_address(struct sockaddr_in &new_sockaddr) + { + return PBSE_NONE; + } diff --git a/src/test/mom_main/test_uut.c b/src/test/mom_main/test_uut.c index f751b222f9..8ce2651af4 100644 --- a/src/test/mom_main/test_uut.c +++ b/src/test/mom_main/test_uut.c @@ -34,6 +34,7 @@ int process_layout_request(tcp_chan *chan); bool should_resend_obit(job *pjob, int diff); void check_job_in_mom_wait(job *pjob); void evaluate_job_in_prerun(job *pjob); +void add_diag_header(std::stringstream &output); extern attribute_def job_attr_def[]; extern int exiting_tasks; @@ -47,6 +48,10 @@ extern int flush_ret; extern int job_bailed; extern bool am_i_ms; +extern char mom_host[PBS_MAXHOSTNAME + 1]; +extern char mom_short_name[PBS_MAXHOSTNAME + 1]; +extern char mom_ipaddr[INET_ADDRSTRLEN]; + bool are_we_forking() { @@ -450,6 +455,24 @@ START_TEST(test_parse_command_line3) END_TEST +START_TEST(test_add_diag_header) + { + std::stringstream output; + std::string output_str; + + mom_ipaddr[0] = '\0'; + mom_short_name[0] = '\0'; + mom_host[0] = '\0'; + + add_diag_header(output); + + output_str = output.str(); + + fail_unless(output_str.find("IP address") != std::string::npos); + } +END_TEST + + Suite *mom_main_suite(void) { Suite *s = suite_create("mom_main_suite methods"); @@ -486,6 +509,10 @@ Suite *mom_main_suite(void) tcase_add_test(tc_core, test_parse_command_line3); suite_add_tcase(s, tc_core); + tc_core = tcase_create("test_add_diag_header"); + tcase_add_test(tc_core, test_add_diag_header); + suite_add_tcase(s, tc_core); + return s; }