From 0a0efdf2af6a1538a2a914a4f75240f4c9ea7d2e Mon Sep 17 00:00:00 2001 From: Moe Jette <jette1@llnl.gov> Date: Sun, 10 Apr 2011 02:24:58 +0000 Subject: [PATCH] sprio: add support for the SLURM_CLUSTERS environment variable This adds support for the SLURM_CLUSTERS environment variable also for sprio. It also makes the test for the priority plugin type dependent on whether running with multiple cluster support or not. --- doc/man/man1/sprio.1 | 8 ++++++++ src/sprio/opts.c | 20 ++++++++++++++++++-- src/sprio/sprio.c | 27 ++++++++++++++------------- 3 files changed, 40 insertions(+), 15 deletions(-) diff --git a/doc/man/man1/sprio.1 b/doc/man/man1/sprio.1 index b3aab2ebfad..e1d8ad0348a 100644 --- a/doc/man/man1/sprio.1 +++ b/doc/man/man1/sprio.1 @@ -141,6 +141,14 @@ Print version information and exit. factor. This is for information purposes only. Actual job data is suppressed. +.SH "ENVIRONMENT VARIABLES" +.PP +If no corresponding commandline option is specified, \fBsprio\fR will use the value of +the following environment variables. +.TP 20 +\fBSLURM_CLUSTERS\fR +Same as \fB\-\-clusters\fR + .SH "EXAMPLES" .eo Print the list of all pending jobs with their weighted priorities diff --git a/src/sprio/opts.c b/src/sprio/opts.c index ddfffe834d7..7611829d8d6 100644 --- a/src/sprio/opts.c +++ b/src/sprio/opts.c @@ -76,6 +76,18 @@ static void _parse_token( char *token, char *field, int *field_size, static void _print_options( void ); static void _usage( void ); +static void _opt_env(void) +{ + char *env_val; + + if ((env_val = getenv("SLURM_CLUSTERS"))) { + if (!(params.clusters = slurmdb_get_info_cluster(env_val))) { + error("'%s' invalid entry for SLURM_CLUSTERS", env_val); + exit(1); + } + } +} + /* * parse_command_line */ @@ -102,6 +114,9 @@ parse_command_line( int argc, char* argv[] ) {NULL, 0, 0, 0} }; + /* get defaults from environment */ + _opt_env(); + while((opt_char = getopt_long(argc, argv, "hj::lM:no:u:vVw", long_options, &option_index)) != -1) { switch (opt_char) { @@ -131,7 +146,6 @@ parse_command_line( int argc, char* argv[] ) optarg); exit(1); } - working_cluster_rec = list_peek(params.clusters); break; case (int) 'n': params.normalized = true; @@ -175,8 +189,10 @@ parse_command_line( int argc, char* argv[] ) } } - if ( params.verbose ) + if (params.verbose) _print_options(); + if (params.clusters) + working_cluster_rec = list_peek(params.clusters); } /* diff --git a/src/sprio/sprio.c b/src/sprio/sprio.c index f176eeaf6d9..eca8b4172dd 100644 --- a/src/sprio/sprio.c +++ b/src/sprio/sprio.c @@ -75,24 +75,12 @@ static int _get_info(priority_factors_request_msg_t *factors_req, int main (int argc, char *argv[]) { - char *temp = NULL; + char *prio_type = NULL; int error_code = SLURM_SUCCESS; priority_factors_request_msg_t req_msg; priority_factors_response_msg_t *resp_msg = NULL; log_options_t opts = LOG_OPTS_STDERR_ONLY ; - /* Check to see if we are running a supported accounting plugin */ - temp = slurm_get_priority_type(); - if(strcasecmp(temp, "priority/multifactor")) { - fprintf (stderr, "You are not running a supported " - "priority plugin\n(%s).\n" - "Only 'priority/multifactor' is supported.\n", - temp); - xfree(temp); - exit(1); - } - xfree(temp); - log_init(xbasename(argv[0]), opts, SYSLOG_FACILITY_USER, NULL); parse_command_line( argc, argv ); @@ -115,6 +103,7 @@ int main (int argc, char *argv[]) weight_js = slurm_ctl_conf_ptr->priority_weight_js; weight_part = slurm_ctl_conf_ptr->priority_weight_part; weight_qos = slurm_ctl_conf_ptr->priority_weight_qos; + prio_type = xstrdup(slurm_ctl_conf_ptr->priority_type); slurm_free_ctl_conf(slurm_ctl_conf_ptr); } else { weight_age = slurm_get_priority_weight_age(); @@ -122,8 +111,20 @@ int main (int argc, char *argv[]) weight_js = slurm_get_priority_weight_job_size(); weight_part = slurm_get_priority_weight_partition(); weight_qos = slurm_get_priority_weight_qos(); + prio_type = slurm_get_priority_type(); } + /* Check to see if we are running a supported accounting plugin */ + if (strcasecmp(prio_type, "priority/multifactor")) { + fprintf (stderr, "You are not running a supported " + "priority plugin\n(%s).\n" + "Only 'priority/multifactor' is supported.\n", + prio_type); + exit(1); + } + xfree(prio_type); + + memset(&req_msg, 0, sizeof(priority_factors_request_msg_t)); if (params.jobs) -- GitLab