Skip to content
Snippets Groups Projects
Commit 608cc19d authored by Alejandro Sanchez's avatar Alejandro Sanchez Committed by Danny Auble
Browse files

Code cleanup, no functional change for bug #3438

parent 9abb7e29
No related branches found
No related tags found
No related merge requests found
...@@ -79,20 +79,20 @@ extern int slurm_mcs_init(void) ...@@ -79,20 +79,20 @@ extern int slurm_mcs_init(void)
if (init_run && g_mcs_context) if (init_run && g_mcs_context)
return retval; return retval;
slurm_mutex_lock(&g_mcs_context_lock);
slurm_mutex_lock(&g_mcs_context_lock);
if (g_mcs_context) if (g_mcs_context)
goto done; goto done;
xfree(mcs_params); xfree(mcs_params);
xfree(mcs_params_common); xfree(mcs_params_common);
xfree(mcs_params_specific); xfree(mcs_params_specific);
type = slurm_get_mcs_plugin(); type = slurm_get_mcs_plugin();
mcs_params = slurm_get_mcs_plugin_params(); mcs_params = slurm_get_mcs_plugin_params();
if (mcs_params == NULL) {
if (mcs_params == NULL)
info("No parameter for mcs plugin, default values set"); info("No parameter for mcs plugin, default values set");
} else { else {
mcs_params_common = xstrdup(mcs_params); mcs_params_common = xstrdup(mcs_params);
sep = index(mcs_params_common, ':'); sep = index(mcs_params_common, ':');
if (sep != NULL) { if (sep != NULL) {
...@@ -101,6 +101,7 @@ extern int slurm_mcs_init(void) ...@@ -101,6 +101,7 @@ extern int slurm_mcs_init(void)
*sep = '\0'; *sep = '\0';
} }
} }
_slurm_mcs_check_and_load_privatedata(mcs_params_common); _slurm_mcs_check_and_load_privatedata(mcs_params_common);
_slurm_mcs_check_and_load_enforced(mcs_params_common); _slurm_mcs_check_and_load_enforced(mcs_params_common);
_slurm_mcs_check_and_load_select(mcs_params_common); _slurm_mcs_check_and_load_select(mcs_params_common);
...@@ -113,8 +114,8 @@ extern int slurm_mcs_init(void) ...@@ -113,8 +114,8 @@ extern int slurm_mcs_init(void)
retval = SLURM_ERROR; retval = SLURM_ERROR;
goto done; goto done;
} }
init_run = true;
init_run = true;
done: done:
slurm_mutex_unlock(&g_mcs_context_lock); slurm_mutex_unlock(&g_mcs_context_lock);
xfree(type); xfree(type);
...@@ -140,7 +141,7 @@ extern int slurm_mcs_fini(void) ...@@ -140,7 +141,7 @@ extern int slurm_mcs_fini(void)
extern int slurm_mcs_reconfig(void) extern int slurm_mcs_reconfig(void)
{ {
slurm_mcs_fini(); slurm_mcs_fini();
return(slurm_mcs_init()); return slurm_mcs_init();
} }
/* slurm_mcs_get_params_specific /* slurm_mcs_get_params_specific
...@@ -157,28 +158,32 @@ extern char *slurm_mcs_get_params_specific(void) ...@@ -157,28 +158,32 @@ extern char *slurm_mcs_get_params_specific(void)
static int _slurm_mcs_check_and_load_enforced(char *params) static int _slurm_mcs_check_and_load_enforced(char *params)
{ {
label_strict_enforced = false; label_strict_enforced = false;
if ((params != NULL) && xstrcasestr(params, "enforced")) if ((params != NULL) && xstrcasestr(params, "enforced"))
label_strict_enforced = true; label_strict_enforced = true;
else else
info("mcs: MCSParameters = %s. ondemand set.", params); info("mcs: MCSParameters = %s. ondemand set.", params);
return SLURM_SUCCESS; return SLURM_SUCCESS;
} }
static int _slurm_mcs_check_and_load_select(char *params) static int _slurm_mcs_check_and_load_select(char *params)
{ {
select_value = MCS_SELECT_ONDEMANDSELECT; select_value = MCS_SELECT_ONDEMANDSELECT;
if (params == NULL) { if (params == NULL) {
return SLURM_SUCCESS; return SLURM_SUCCESS;
} }
if (xstrcasestr(params, "noselect")) {
if (xstrcasestr(params, "noselect"))
select_value = MCS_SELECT_NOSELECT; select_value = MCS_SELECT_NOSELECT;
} else if (xstrcasestr(params, "ondemandselect")) { else if (xstrcasestr(params, "ondemandselect"))
select_value = MCS_SELECT_ONDEMANDSELECT; select_value = MCS_SELECT_ONDEMANDSELECT;
} else if (xstrcasestr(params, "select")) { else if (xstrcasestr(params, "select"))
select_value = MCS_SELECT_SELECT; select_value = MCS_SELECT_SELECT;
} else { else
info("mcs: MCSParameters = %s. ondemandselect set.", params); info("mcs: MCSParameters = %s. ondemandselect set.", params);
}
return SLURM_SUCCESS; return SLURM_SUCCESS;
} }
...@@ -188,11 +193,12 @@ static int _slurm_mcs_check_and_load_privatedata(char *params) ...@@ -188,11 +193,12 @@ static int _slurm_mcs_check_and_load_privatedata(char *params)
private_data = false; private_data = false;
return SLURM_SUCCESS; return SLURM_SUCCESS;
} }
if (xstrcasestr(params, "privatedata")) {
if (xstrcasestr(params, "privatedata"))
private_data = true; private_data = true;
} else { else
private_data = false; private_data = false;
}
return SLURM_SUCCESS; return SLURM_SUCCESS;
} }
...@@ -201,18 +207,19 @@ extern int slurm_mcs_reset_params(void) ...@@ -201,18 +207,19 @@ extern int slurm_mcs_reset_params(void)
label_strict_enforced = false; label_strict_enforced = false;
select_value = MCS_SELECT_ONDEMANDSELECT; select_value = MCS_SELECT_ONDEMANDSELECT;
private_data = false; private_data = false;
return SLURM_SUCCESS; return SLURM_SUCCESS;
} }
extern int slurm_mcs_get_enforced(void) extern int slurm_mcs_get_enforced(void)
{ {
return(label_strict_enforced); return label_strict_enforced;
} }
extern int slurm_mcs_get_select(struct job_record *job_ptr) extern int slurm_mcs_get_select(struct job_record *job_ptr)
{ {
if ((select_value == MCS_SELECT_SELECT) || if ((select_value == MCS_SELECT_SELECT) ||
((select_value == MCS_SELECT_ONDEMANDSELECT) && ((select_value == MCS_SELECT_ONDEMANDSELECT) &&
job_ptr->details && job_ptr->details &&
(job_ptr->details->whole_node == WHOLE_NODE_MCS))) (job_ptr->details->whole_node == WHOLE_NODE_MCS)))
return 1; return 1;
...@@ -237,5 +244,6 @@ extern int mcs_g_check_mcs_label(uint32_t user_id, char *mcs_label) ...@@ -237,5 +244,6 @@ extern int mcs_g_check_mcs_label(uint32_t user_id, char *mcs_label)
{ {
if (slurm_mcs_init() < 0) if (slurm_mcs_init() < 0)
return 0; return 0;
return (int) (*(ops.check))(user_id, mcs_label);
return (int)(*(ops.check))(user_id, mcs_label);
} }
...@@ -98,21 +98,21 @@ extern int mcs_p_set_mcs_label(struct job_record *job_ptr, char *label) ...@@ -98,21 +98,21 @@ extern int mcs_p_set_mcs_label(struct job_record *job_ptr, char *label)
{ {
int rc = SLURM_SUCCESS; int rc = SLURM_SUCCESS;
xfree(job_ptr->mcs_label); xfree(job_ptr->mcs_label);
if (label != NULL) { if (label != NULL) {
/* test label param */ /* test label param */
if (!xstrcmp(label, job_ptr->account)) { if (!xstrcmp(label, job_ptr->account))
job_ptr->mcs_label = xstrdup(job_ptr->account); job_ptr->mcs_label = xstrdup(job_ptr->account);
} else { else
rc = SLURM_ERROR; rc = SLURM_ERROR;
}
} else { } else {
if ((slurm_mcs_get_enforced() == 0) && job_ptr->details && if ((slurm_mcs_get_enforced() == 0) && job_ptr->details &&
(job_ptr->details->whole_node != WHOLE_NODE_MCS)) { (job_ptr->details->whole_node != WHOLE_NODE_MCS))
; ;
} else { else
job_ptr->mcs_label = xstrdup(job_ptr->account); job_ptr->mcs_label = xstrdup(job_ptr->account);
}
} }
return rc; return rc;
} }
...@@ -127,14 +127,16 @@ extern int mcs_p_check_mcs_label(uint32_t user_id, char *mcs_label) ...@@ -127,14 +127,16 @@ extern int mcs_p_check_mcs_label(uint32_t user_id, char *mcs_label)
memset(&assoc_rec, 0, sizeof(slurmdb_assoc_rec_t)); memset(&assoc_rec, 0, sizeof(slurmdb_assoc_rec_t));
assoc_rec.acct = mcs_label; assoc_rec.acct = mcs_label;
assoc_rec.uid = user_id; assoc_rec.uid = user_id;
if (mcs_label != NULL) { if (mcs_label != NULL) {
if (!assoc_mgr_fill_in_assoc(acct_db_conn, &assoc_rec, if (!assoc_mgr_fill_in_assoc(acct_db_conn, &assoc_rec,
accounting_enforce, accounting_enforce,
(slurmdb_assoc_rec_t **) (slurmdb_assoc_rec_t **) NULL,
NULL, false)) false))
rc = SLURM_SUCCESS; rc = SLURM_SUCCESS;
else else
rc = SLURM_ERROR; rc = SLURM_ERROR;
} }
return rc; return rc;
} }
...@@ -92,12 +92,15 @@ extern int init(void) ...@@ -92,12 +92,15 @@ extern int init(void)
{ {
debug("%s loaded", plugin_name); debug("%s loaded", plugin_name);
mcs_params_specific = slurm_mcs_get_params_specific(); mcs_params_specific = slurm_mcs_get_params_specific();
if (_check_and_load_params() != 0) { if (_check_and_load_params() != 0) {
info("mcs: plugin warning : no group in %s", mcs_params_specific); info("mcs: plugin warning : no group in %s",
mcs_params_specific);
xfree(mcs_params_specific); xfree(mcs_params_specific);
/* no need to check others options : default values used */ /* no need to check others options : default values used */
return SLURM_SUCCESS; return SLURM_SUCCESS;
} }
xfree(mcs_params_specific); xfree(mcs_params_specific);
return SLURM_SUCCESS; return SLURM_SUCCESS;
} }
...@@ -125,6 +128,7 @@ static int _get_user_groups(uint32_t user_id, uint32_t group_id, ...@@ -125,6 +128,7 @@ static int _get_user_groups(uint32_t user_id, uint32_t group_id,
user_name = uid_to_string((uid_t) user_id); user_name = uid_to_string((uid_t) user_id);
*ngroups = max_groups; *ngroups = max_groups;
rc = getgrouplist(user_name, (gid_t) group_id, groups, ngroups); rc = getgrouplist(user_name, (gid_t) group_id, groups, ngroups);
if (rc < 0) { if (rc < 0) {
error("getgrouplist(%s): %m", user_name); error("getgrouplist(%s): %m", user_name);
rc = SLURM_ERROR; rc = SLURM_ERROR;
...@@ -132,6 +136,7 @@ static int _get_user_groups(uint32_t user_id, uint32_t group_id, ...@@ -132,6 +136,7 @@ static int _get_user_groups(uint32_t user_id, uint32_t group_id,
*ngroups = rc; *ngroups = rc;
rc = SLURM_SUCCESS; rc = SLURM_SUCCESS;
} }
xfree(user_name); xfree(user_name);
return rc; return rc;
} }
...@@ -154,15 +159,17 @@ static int _check_and_load_params(void) ...@@ -154,15 +159,17 @@ static int _check_and_load_params(void)
slurm_mcs_reset_params(); slurm_mcs_reset_params();
return SLURM_ERROR; return SLURM_ERROR;
} }
n = strlen(mcs_params_specific); n = strlen(mcs_params_specific);
for (i = 0 ; i < n ; i++) { for (i = 0 ; i < n ; i++) {
if (mcs_params_specific[i] == '|') if (mcs_params_specific[i] == '|')
nb_mcs_groups = nb_mcs_groups + 1; nb_mcs_groups = nb_mcs_groups + 1;
} }
if (nb_mcs_groups == 0) { if (nb_mcs_groups == 0) {
/* no | in param : just one group */ /* no | in param : just one group */
if (mcs_params_specific != NULL) { if (mcs_params_specific != NULL) {
if ( gid_from_string(mcs_params_specific, &gid ) != 0 ) { if (gid_from_string(mcs_params_specific, &gid ) != 0 ) {
info("mcs: Only one invalid group : %s. " info("mcs: Only one invalid group : %s. "
"ondemand, ondemandselect set", groups_names); "ondemand, ondemandselect set", groups_names);
nb_mcs_groups = 0; nb_mcs_groups = 0;
...@@ -190,10 +197,12 @@ static int _check_and_load_params(void) ...@@ -190,10 +197,12 @@ static int _check_and_load_params(void)
} }
return SLURM_SUCCESS; return SLURM_SUCCESS;
} }
nb_mcs_groups = nb_mcs_groups + 1; nb_mcs_groups = nb_mcs_groups + 1;
array_mcs_parameter = xmalloc(nb_mcs_groups * sizeof(uint32_t)); array_mcs_parameter = xmalloc(nb_mcs_groups * sizeof(uint32_t));
tmp_params = xstrdup(mcs_params_specific); tmp_params = xstrdup(mcs_params_specific);
groups_names = strtok_r(tmp_params, "|", &name_ptr); groups_names = strtok_r(tmp_params, "|", &name_ptr);
i = 0; i = 0;
while (groups_names) { while (groups_names) {
if (i == (nb_mcs_groups - 1)) { if (i == (nb_mcs_groups - 1)) {
...@@ -213,6 +222,7 @@ static int _check_and_load_params(void) ...@@ -213,6 +222,7 @@ static int _check_and_load_params(void)
i = i + 1; i = i + 1;
groups_names = strtok_r(NULL, "|", &name_ptr); groups_names = strtok_r(NULL, "|", &name_ptr);
} }
/* if no valid group : deselect all params */ /* if no valid group : deselect all params */
if (nb_valid_group == 0) { if (nb_valid_group == 0) {
slurm_mcs_reset_params(); slurm_mcs_reset_params();
...@@ -220,6 +230,7 @@ static int _check_and_load_params(void) ...@@ -220,6 +230,7 @@ static int _check_and_load_params(void)
xfree(tmp_params); xfree(tmp_params);
return SLURM_ERROR; return SLURM_ERROR;
} }
xfree(tmp_params); xfree(tmp_params);
return SLURM_SUCCESS; return SLURM_SUCCESS;
} }
...@@ -236,20 +247,20 @@ static int _find_mcs_label(gid_t *groups, int ngroups, char **result) ...@@ -236,20 +247,20 @@ static int _find_mcs_label(gid_t *groups, int ngroups, char **result)
struct group *gr; struct group *gr;
if (ngroups == 0) if (ngroups == 0)
rc = SLURM_ERROR; return SLURM_ERROR;
else {
for( i = 0 ; i < nb_mcs_groups ; i++) { for (i = 0; i < nb_mcs_groups; i++) {
for ( j = 0 ; j < ngroups ; j++) { for (j = 0; j < ngroups; j++) {
tmp_group = (uint32_t) groups[j]; tmp_group = (uint32_t) groups[j];
if (array_mcs_parameter[i] == tmp_group ) { if (array_mcs_parameter[i] == tmp_group) {
gr = getgrgid(groups[j]); gr = getgrgid(groups[j]);
*result = gr->gr_name; *result = gr->gr_name;
return rc; return rc;
}
} }
} }
rc = SLURM_ERROR;
} }
rc = SLURM_ERROR;
return rc; return rc;
} }
...@@ -266,7 +277,7 @@ static int _check_mcs_label (struct job_record *job_ptr, char *label) ...@@ -266,7 +277,7 @@ static int _check_mcs_label (struct job_record *job_ptr, char *label)
int ngroups = -1; int ngroups = -1;
/* test if real unix group */ /* test if real unix group */
if ( gid_from_string(label, &gid ) != 0 ) if (gid_from_string(label, &gid ) != 0)
return rc; return rc;
/* test if this group is owned by the user */ /* test if this group is owned by the user */
...@@ -274,6 +285,7 @@ static int _check_mcs_label (struct job_record *job_ptr, char *label) ...@@ -274,6 +285,7 @@ static int _check_mcs_label (struct job_record *job_ptr, char *label)
groups, MAX_GROUPS, &ngroups); groups, MAX_GROUPS, &ngroups);
if (rc) /* Failed to get groups */ if (rc) /* Failed to get groups */
return rc; return rc;
rc = SLURM_ERROR; rc = SLURM_ERROR;
for (i = 0; i < ngroups; i++) { for (i = 0; i < ngroups; i++) {
tmp_group = (uint32_t) groups[i]; tmp_group = (uint32_t) groups[i];
...@@ -282,16 +294,19 @@ static int _check_mcs_label (struct job_record *job_ptr, char *label) ...@@ -282,16 +294,19 @@ static int _check_mcs_label (struct job_record *job_ptr, char *label)
break; break;
} }
} }
if (rc == SLURM_ERROR) if (rc == SLURM_ERROR)
return rc; return rc;
rc = SLURM_ERROR; rc = SLURM_ERROR;
/* test if mcs_label is in list of possible mcs_label */ /* test if mcs_label is in list of possible mcs_label */
for( i = 0 ; i < nb_mcs_groups ; i++) { for (i = 0; i < nb_mcs_groups; i++) {
if (array_mcs_parameter[i] == gid ) { if (array_mcs_parameter[i] == gid) {
rc = SLURM_SUCCESS; rc = SLURM_SUCCESS;
return rc; return rc;
} }
} }
return rc; return rc;
} }
...@@ -311,6 +326,7 @@ extern int mcs_p_set_mcs_label (struct job_record *job_ptr, char *label) ...@@ -311,6 +326,7 @@ extern int mcs_p_set_mcs_label (struct job_record *job_ptr, char *label)
if ((slurm_mcs_get_enforced() == 0) && job_ptr->details && if ((slurm_mcs_get_enforced() == 0) && job_ptr->details &&
(job_ptr->details->whole_node != WHOLE_NODE_MCS)) (job_ptr->details->whole_node != WHOLE_NODE_MCS))
return SLURM_SUCCESS; return SLURM_SUCCESS;
rc = _get_user_groups(job_ptr->user_id,job_ptr->group_id, rc = _get_user_groups(job_ptr->user_id,job_ptr->group_id,
groups, MAX_GROUPS, &ngroups); groups, MAX_GROUPS, &ngroups);
if (rc) { /* Failed to get groups */ if (rc) { /* Failed to get groups */
...@@ -319,6 +335,7 @@ extern int mcs_p_set_mcs_label (struct job_record *job_ptr, char *label) ...@@ -319,6 +335,7 @@ extern int mcs_p_set_mcs_label (struct job_record *job_ptr, char *label)
else else
return SLURM_ERROR; return SLURM_ERROR;
} }
rc = _find_mcs_label(groups, ngroups, &result); rc = _find_mcs_label(groups, ngroups, &result);
if (rc) { if (rc) {
return SLURM_ERROR; return SLURM_ERROR;
...@@ -351,9 +368,9 @@ extern int mcs_p_check_mcs_label (uint32_t user_id, char *mcs_label) ...@@ -351,9 +368,9 @@ extern int mcs_p_check_mcs_label (uint32_t user_id, char *mcs_label)
if (mcs_label != NULL) { if (mcs_label != NULL) {
/* test if real unix group */ /* test if real unix group */
if ( gid_from_string(mcs_label, &gid ) != 0 ) { if (gid_from_string(mcs_label, &gid ) != 0)
return rc; return rc;
}
/* test if this group is owned by the user */ /* test if this group is owned by the user */
slurm_user_gid = gid_from_uid(user_id); slurm_user_gid = gid_from_uid(user_id);
group_id = (uint32_t) slurm_user_gid; group_id = (uint32_t) slurm_user_gid;
...@@ -361,6 +378,7 @@ extern int mcs_p_check_mcs_label (uint32_t user_id, char *mcs_label) ...@@ -361,6 +378,7 @@ extern int mcs_p_check_mcs_label (uint32_t user_id, char *mcs_label)
&ngroups); &ngroups);
if (rc) /* Failed to get groups */ if (rc) /* Failed to get groups */
return rc; return rc;
rc = SLURM_ERROR; rc = SLURM_ERROR;
for (i = 0; i < ngroups; i++) { for (i = 0; i < ngroups; i++) {
tmp_group = (uint32_t) groups[i]; tmp_group = (uint32_t) groups[i];
...@@ -369,8 +387,8 @@ extern int mcs_p_check_mcs_label (uint32_t user_id, char *mcs_label) ...@@ -369,8 +387,8 @@ extern int mcs_p_check_mcs_label (uint32_t user_id, char *mcs_label)
break; break;
} }
} }
} else { } else
rc = SLURM_SUCCESS; rc = SLURM_SUCCESS;
}
return rc; return rc;
} }
...@@ -95,23 +95,24 @@ extern int mcs_p_set_mcs_label (struct job_record *job_ptr, char *label) ...@@ -95,23 +95,24 @@ extern int mcs_p_set_mcs_label (struct job_record *job_ptr, char *label)
{ {
char *user = NULL; char *user = NULL;
int rc = SLURM_SUCCESS; int rc = SLURM_SUCCESS;
user = uid_to_string((uid_t) job_ptr->user_id); user = uid_to_string((uid_t) job_ptr->user_id);
xfree(job_ptr->mcs_label); xfree(job_ptr->mcs_label);
if (label != NULL) { if (label != NULL) {
/* test label param */ /* test label param */
if (xstrcmp(label, user) == 0) { if (xstrcmp(label, user) == 0)
job_ptr->mcs_label = xstrdup(user); job_ptr->mcs_label = xstrdup(user);
} else { else
rc = SLURM_ERROR; rc = SLURM_ERROR;
}
} else { } else {
if ((slurm_mcs_get_enforced() == 0) && job_ptr->details && if ((slurm_mcs_get_enforced() == 0) && job_ptr->details &&
(job_ptr->details->whole_node != WHOLE_NODE_MCS)) { (job_ptr->details->whole_node != WHOLE_NODE_MCS))
; ;
} else { else
job_ptr->mcs_label = xstrdup(user); job_ptr->mcs_label = xstrdup(user);
}
} }
xfree(user); xfree(user);
return rc; return rc;
} }
...@@ -123,16 +124,16 @@ extern int mcs_p_check_mcs_label (uint32_t user_id, char *mcs_label) ...@@ -123,16 +124,16 @@ extern int mcs_p_check_mcs_label (uint32_t user_id, char *mcs_label)
{ {
char *user = NULL; char *user = NULL;
int rc = SLURM_SUCCESS; int rc = SLURM_SUCCESS;
user = uid_to_string((uid_t) user_id); user = uid_to_string((uid_t) user_id);
if (mcs_label != NULL) { if (mcs_label != NULL) {
if (xstrcmp(mcs_label, user) == 0) { if (xstrcmp(mcs_label, user) == 0)
rc = SLURM_SUCCESS; rc = SLURM_SUCCESS;
} else { else
rc = SLURM_ERROR; rc = SLURM_ERROR;
} } else
} else {
rc = SLURM_SUCCESS; rc = SLURM_SUCCESS;
}
xfree(user); xfree(user);
return rc; return rc;
} }
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