diff --git a/NEWS b/NEWS index 56883e45f79b9b4959b323392c0d665e15845a95..eaafb996fbbef45ed0e214bc9245d852bf955781 100644 --- a/NEWS +++ b/NEWS @@ -141,6 +141,8 @@ documents those changes that are of interest to users and admins. daemon. Patch by Don Albert, Bull. -- Fix bug in srun --multi-prog configuration file to avoid printing duplicate record error when "*" is used at the end of the file for the task ID. + -- Let operators see reservation data even if "PrivateData=reservations" flag + is set in slurm.conf. Patch from Don Albert, Bull. * Changes in SLURM 2.3.2 ======================== diff --git a/src/common/read_config.c b/src/common/read_config.c index 49e1ae791d1fe47b4992a664a7c23efc285b3bd2..4c06c329f69f627e7923927ed25d5a49a0f58ae6 100644 --- a/src/common/read_config.c +++ b/src/common/read_config.c @@ -2889,6 +2889,7 @@ _validate_and_set_defaults(slurm_ctl_conf_t *conf, s_p_hashtbl_t *hashtbl) && (!strcmp(conf->proctrack_type,"proctrack/linuxproc"))) fatal("proctrack/linuxproc is incompatible with switch/elan"); + conf->private_data = 0; /* Set to default before parsing PrivateData */ if (s_p_get_string(&temp_str, "PrivateData", hashtbl)) { if (strstr(temp_str, "account")) conf->private_data |= PRIVATE_DATA_ACCOUNTS; diff --git a/src/common/slurm_protocol_defs.c b/src/common/slurm_protocol_defs.c index 763bfbb9a0835294cea2798124da47ead3179e6b..62d0249bada2c0c991e7d6d6efab928fc2ca112a 100644 --- a/src/common/slurm_protocol_defs.c +++ b/src/common/slurm_protocol_defs.c @@ -1611,7 +1611,7 @@ extern void private_data_string(uint16_t private_data, char *str, int str_len) { if (str_len > 0) str[0] = '\0'; - if (str_len < 42) { + if (str_len < 55) { error("private_data_string: output buffer too small"); return; } @@ -1643,7 +1643,12 @@ extern void private_data_string(uint16_t private_data, char *str, int str_len) strcat(str, ","); strcat(str, "accounts"); //9 len } - // total len 42 + if (private_data & PRIVATE_DATA_RESERVATIONS) { + if (str[0]) + strcat(str, ","); + strcat(str, "reservations"); //13 len + } + // total len 55 if (str[0] == '\0') strcat(str, "none"); diff --git a/src/slurmctld/reservation.c b/src/slurmctld/reservation.c index 5f68c5f490d046429fe88ceb0c2800ca7e0cfd48..1b12c77b6bc3b92d3268ea0c37965bd67907fb19 100644 --- a/src/slurmctld/reservation.c +++ b/src/slurmctld/reservation.c @@ -1878,7 +1878,7 @@ extern void show_resv(char **buffer_ptr, int *buffer_size, uid_t uid) fatal("malloc: list_iterator_create"); while ((resv_ptr = (slurmctld_resv_t *) list_next(iter))) { if ((slurmctld_conf.private_data & PRIVATE_DATA_RESERVATIONS) - && !validate_slurm_user(uid)) { + && !validate_operator(uid)) { int i = 0; for (i=0; i<resv_ptr->user_cnt; i++) { if (resv_ptr->user_list[i] == uid) diff --git a/src/slurmdbd/read_config.c b/src/slurmdbd/read_config.c index 260505ab6d252622d0346cdc8186beae9c87806f..df3f73b364e4e251e0d3eea987b2a90c6f46f6d2 100644 --- a/src/slurmdbd/read_config.c +++ b/src/slurmdbd/read_config.c @@ -240,6 +240,8 @@ extern int read_slurmdbd_conf(void) } s_p_get_string(&slurmdbd_conf->pid_file, "PidFile", tbl); s_p_get_string(&slurmdbd_conf->plugindir, "PluginDir", tbl); + + slurmdbd_conf->private_data = 0; /* default visible to all */ if (s_p_get_string(&temp_str, "PrivateData", tbl)) { if (strstr(temp_str, "account")) slurmdbd_conf->private_data