Skip to content
Snippets Groups Projects
Commit 850fe677 authored by Moe Jette's avatar Moe Jette
Browse files

Add basic support for SlurmUser configuration parameter.

parent 3b2846ad
No related branches found
No related tags found
No related merge requests found
......@@ -76,6 +76,9 @@ void slurm_print_ctl_conf ( FILE* out,
slurm_ctl_conf_ptr->prolog);
fprintf(out, "ReturnToService = %u\n",
slurm_ctl_conf_ptr->ret2service);
fprintf(out, "SlurmUser = %s(%u)\n",
slurm_ctl_conf_ptr->slurm_user_name,
slurm_ctl_conf_ptr->slurm_user_id);
fprintf(out, "SlurmctldLogFile = %s\n",
slurm_ctl_conf_ptr->slurmctld_logfile);
fprintf(out, "SlurmctldTimeout = %u\n",
......
......@@ -157,6 +157,8 @@ void slurm_free_ctl_conf(slurm_ctl_conf_info_msg_t * config_ptr)
xfree(config_ptr->prioritize);
if (config_ptr->prolog)
xfree(config_ptr->prolog);
if (config_ptr->slurm_user_name)
xfree(config_ptr->slurm_user_name);
if (config_ptr->slurmctld_logfile)
xfree(config_ptr->slurmctld_logfile);
if (config_ptr->slurmd_logfile)
......
......@@ -343,6 +343,8 @@ typedef struct slurm_ctl_conf {
char *prolog; /* pathname of job prolog */
uint16_t ret2service; /* 1 return DOWN node to service at
* registration */
uint16_t slurm_user_id; /* uid of slurm_user_name */
char *slurm_user_name; /* user that slurmctld runs as */
char *slurmctld_logfile;/* where slurmctld error log gets written */
uint32_t slurmctld_port;/* default communications port to slurmctld */
uint16_t slurmctld_timeout;/* seconds that backup controller waits
......
......@@ -32,6 +32,7 @@
#include <ctype.h>
#include <errno.h>
#include <netdb.h>
#include <pwd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
......@@ -85,6 +86,8 @@ init_slurm_conf (slurm_ctl_conf_t *ctl_conf_ptr)
FREE_NULL (ctl_conf_ptr->prolog);
ctl_conf_ptr->ret2service = (uint16_t) NO_VAL;
FREE_NULL (ctl_conf_ptr->slurmctld_logfile);
ctl_conf_ptr->slurm_user_id = (uint16_t) NO_VAL;
FREE_NULL (ctl_conf_ptr->slurm_user_name);
ctl_conf_ptr->slurmctld_port = (uint32_t) NO_VAL;
ctl_conf_ptr->slurmctld_timeout = (uint16_t) NO_VAL;
FREE_NULL (ctl_conf_ptr->slurmd_logfile);
......@@ -124,6 +127,7 @@ parse_config_spec (char *in_line, slurm_ctl_conf_t *ctl_conf_ptr)
char *control_addr = NULL, *control_machine = NULL, *epilog = NULL;
char *prioritize = NULL, *prolog = NULL;
char *state_save_location = NULL, *tmp_fs = NULL;
char *slurm_user = NULL;
char *slurmctld_logfile = NULL, *slurmctld_port = NULL;
char *slurmd_logfile = NULL, *slurmd_port = NULL;
char *slurmd_spooldir = NULL, *slurmd_pidfile = NULL;
......@@ -143,23 +147,24 @@ parse_config_spec (char *in_line, slurm_ctl_conf_t *ctl_conf_ptr)
"HashBase=", 'd', &hash_base,
"HeartbeatInterval=", 'd', &heartbeat_interval,
"InactiveLimit=", 'd', &inactive_limit,
"JobCredentialPrivateKey=", 's', &job_credential_private_key,
"JobCredentialPublicCertificate=", 's',
&job_credential_public_certificate,
"KillWait=", 'd', &kill_wait,
"Prioritize=", 's', &prioritize,
"Prolog=", 's', &prolog,
"ReturnToService=", 'd', &ret2service,
"SlurmUser=", 's', &slurm_user,
"SlurmctldLogFile=", 's', &slurmctld_logfile,
"SlurmctldPort=", 's', &slurmctld_port,
"SlurmctldTimeout=", 'd', &slurmctld_timeout,
"SlurmdLogFile=", 's', &slurmd_logfile,
"SlurmdPidFile=", 's', &slurmd_pidfile,
"SlurmdPort=", 's', &slurmd_port,
"SlurmdSpoolDir=", 's', &slurmd_spooldir,
"SlurmdPidFile=", 's', &slurmd_pidfile,
"SlurmdTimeout=", 'd', &slurmd_timeout,
"StateSaveLocation=", 's', &state_save_location,
"TmpFS=", 's', &tmp_fs,
"JobCredentialPrivateKey=", 's', &job_credential_private_key,
"JobCredentialPublicCertificate=", 's',
&job_credential_public_certificate,
"END");
if (error_code)
......@@ -263,6 +268,22 @@ parse_config_spec (char *in_line, slurm_ctl_conf_t *ctl_conf_ptr)
ctl_conf_ptr->ret2service = ret2service;
}
if ( slurm_user ) {
struct passwd *slurm_passwd;
slurm_passwd = getpwnam(slurm_user);
if (slurm_passwd == NULL) {
error ("Invalid user for SlurmUser %s, ignored",
slurm_user);
} else {
if ( ctl_conf_ptr->slurm_user_name ) {
error (MULTIPLE_VALUE_MSG, "SlurmUser");
xfree (ctl_conf_ptr->slurm_user_name);
}
ctl_conf_ptr->slurm_user_name = slurm_user;
ctl_conf_ptr->slurm_user_id = slurm_passwd->pw_uid;
}
}
if ( slurmctld_logfile ) {
if ( ctl_conf_ptr->slurmctld_logfile ) {
error (MULTIPLE_VALUE_MSG, "SlurmctldLogFile");
......
......@@ -1580,6 +1580,8 @@ static void _pack_slurm_ctl_conf_msg (
packstr (build_ptr->prioritize, buffer);
packstr (build_ptr->prolog, buffer);
pack16 (build_ptr->ret2service, buffer);
pack16 (build_ptr->slurm_user_id, buffer);
packstr (build_ptr->slurm_user_name, buffer);
packstr (build_ptr->slurmctld_logfile, buffer);
pack16 (build_ptr->slurmctld_timeout, buffer);
packstr (build_ptr->slurmd_logfile, buffer);
......@@ -1625,6 +1627,9 @@ static int _unpack_slurm_ctl_conf_msg (
safe_unpackstr_xmalloc (&build_ptr->prolog, &uint16_tmp,
buffer);
safe_unpack16 (&build_ptr->ret2service, buffer);
safe_unpack16 (&build_ptr->slurm_user_id, buffer);
safe_unpackstr_xmalloc (&build_ptr->slurm_user_name,
&uint16_tmp, buffer);
safe_unpackstr_xmalloc (&build_ptr->slurmctld_logfile,
&uint16_tmp, buffer);
safe_unpack16 (&build_ptr->slurmctld_timeout, buffer);
......
......@@ -1980,15 +1980,22 @@ void _fill_ctld_conf(slurm_ctl_conf_t * conf_ptr)
conf_ptr->hash_base = slurmctld_conf.hash_base;
conf_ptr->heartbeat_interval = slurmctld_conf.heartbeat_interval;
conf_ptr->inactive_limit = slurmctld_conf.inactive_limit;
conf_ptr->job_credential_private_key =
slurmctld_conf.job_credential_private_key;
conf_ptr->job_credential_public_certificate =
slurmctld_conf.job_credential_public_certificate;
conf_ptr->kill_wait = slurmctld_conf.kill_wait;
conf_ptr->prioritize = slurmctld_conf.prioritize;
conf_ptr->prolog = slurmctld_conf.prolog;
conf_ptr->ret2service = slurmctld_conf.ret2service;
conf_ptr->slurm_user_id = slurmctld_conf.slurm_user_id;
conf_ptr->slurm_user_name = slurmctld_conf.slurm_user_name;
conf_ptr->slurmctld_logfile = slurmctld_conf.slurmctld_logfile;
conf_ptr->slurmctld_port = slurmctld_conf.slurmctld_port;
conf_ptr->slurmctld_timeout = slurmctld_conf.slurmctld_timeout;
conf_ptr->slurmd_logfile = slurmctld_conf.slurmd_logfile;
conf_ptr->slurmd_spooldir = slurmctld_conf.slurmd_spooldir;
conf_ptr->slurmd_pidfile = slurmctld_conf.slurmd_pidfile;
conf_ptr->slurmd_port = slurmctld_conf.slurmd_port;
conf_ptr->slurmd_timeout = slurmctld_conf.slurmd_timeout;
conf_ptr->slurm_conf = slurmctld_conf.slurm_conf;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment