From 44423dad7a3d88f0897af113e60df52d457bd886 Mon Sep 17 00:00:00 2001 From: Danny Auble <da@schedmd.com> Date: Fri, 26 May 2017 15:04:42 -0600 Subject: [PATCH] Add function to determine if a job is held by a QOS GRP limit. --- src/common/slurm_protocol_defs.c | 21 +++++++++++++++++++++ src/common/slurm_protocol_defs.h | 1 + 2 files changed, 22 insertions(+) diff --git a/src/common/slurm_protocol_defs.c b/src/common/slurm_protocol_defs.c index 5c7437dff9a..f106d3013cf 100644 --- a/src/common/slurm_protocol_defs.c +++ b/src/common/slurm_protocol_defs.c @@ -1862,6 +1862,27 @@ extern char *job_reason_string(enum job_state_reason inx) } } +/* If the job is held up by a QOS GRP limit return true else return false. */ +extern bool job_state_qos_grp_limit(enum job_state_reason state_reason) +{ + if ((state_reason >= WAIT_QOS_GRP_CPU && + state_reason <= WAIT_QOS_GRP_WALL) || + (state_reason == WAIT_QOS_GRP_MEM_MIN) || + (state_reason == WAIT_QOS_GRP_MEM_RUN_MIN) || + (state_reason >= WAIT_QOS_GRP_ENERGY && + state_reason <= WAIT_QOS_GRP_ENERGY_RUN_MIN) || + (state_reason == WAIT_QOS_GRP_NODE_MIN) || + (state_reason == WAIT_QOS_GRP_NODE_RUN_MIN) || + (state_reason >= WAIT_QOS_GRP_GRES && + state_reason <= WAIT_QOS_GRP_GRES_RUN_MIN) || + (state_reason >= WAIT_QOS_GRP_LIC && + state_reason <= WAIT_QOS_GRP_LIC_RUN_MIN) || + (state_reason >= WAIT_QOS_GRP_BB && + state_reason <= WAIT_QOS_GRP_BB_RUN_MIN)) + return true; + return false; +} + extern void slurm_free_get_kvs_msg(kvs_get_msg_t *msg) { if (msg) { diff --git a/src/common/slurm_protocol_defs.h b/src/common/slurm_protocol_defs.h index 81b40cdd48a..286461d1bb8 100644 --- a/src/common/slurm_protocol_defs.h +++ b/src/common/slurm_protocol_defs.h @@ -1478,6 +1478,7 @@ extern uint16_t bb_state_num(char *tok); extern char *health_check_node_state_str(uint32_t node_state); extern char *job_reason_string(enum job_state_reason inx); +extern bool job_state_qos_grp_limit(enum job_state_reason state_reason); extern char *job_share_string(uint16_t shared); extern char *job_state_string(uint32_t inx); extern char *job_state_string_compact(uint32_t inx); -- GitLab