diff --git a/src/common/slurmdbd_defs.c b/src/common/slurmdbd_defs.c index c12cbb8f53ab42b51822d31287138326bcb6fa21..1099cea74e6b3b46bff6de010b8832983d981459 100644 --- a/src/common/slurmdbd_defs.c +++ b/src/common/slurmdbd_defs.c @@ -301,13 +301,12 @@ static void _open_slurmdbd_fd() slurmdbd_host = slurm_get_accounting_storage_host(); slurmdbd_port = slurm_get_accounting_storage_port(); - if ((slurmdbd_host == NULL) || (slurmdbd_port == 0)) { - error("Invalid SlurmDbd address %s:%u", - slurmdbd_host, slurmdbd_port); - xfree(slurmdbd_host); - return; - } - + if (slurmdbd_host == NULL) + slurmdbd_host = xstrdup(DEFAULT_STORAGE_HOST); + + if (slurmdbd_port == 0) + slurmdbd_port = SLURMDBD_PORT; + slurm_set_addr(&dbd_addr, slurmdbd_port, slurmdbd_host); if (dbd_addr.sin_port == 0) error("Unable to locate SlurmDBD host %s:%u", diff --git a/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c b/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c index d437cad38be793cb1bbf8c7c10d499479b0e3bcc..58636d678cfc2bb9be635c0995abe0dc0afc1c71 100644 --- a/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c +++ b/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c @@ -248,10 +248,12 @@ static int _move_account(mysql_conn_t *mysql_conn, uint32_t lft, uint32_t rgt, width = (rgt - lft + 1); + /* every thing below needs to be a %d not a %u because we are + looking for -1 */ xstrfmtcat(query, "update %s set deleted = deleted + 2, " "lft = lft + %d, rgt = rgt + %d " - "WHERE lft BETWEEN %u AND %u;", + "WHERE lft BETWEEN %d AND %d;", assoc_table, diff, diff, lft, rgt); xstrfmtcat(query, @@ -266,11 +268,11 @@ static int _move_account(mysql_conn_t *mysql_conn, uint32_t lft, uint32_t rgt, xstrfmtcat(query, "UPDATE %s SET rgt = rgt - %d WHERE " - "(%d < 0 && rgt > %u && deleted < 2) " - "|| (%d > 0 && rgt > %u);" + "(%d < 0 && rgt > %d && deleted < 2) " + "|| (%d > 0 && rgt > %d);" "UPDATE %s SET lft = lft - %d WHERE " - "(%d < 0 && lft > %u && deleted < 2) " - "|| (%d > 0 && lft > %u);", + "(%d < 0 && lft > %d && deleted < 2) " + "|| (%d > 0 && lft > %d);", assoc_table, width, diff, rgt, diff, lft, @@ -3389,7 +3391,7 @@ extern List acct_storage_p_modify_associations( * set if they are an operator or greater and then * check it below after the query. */ - if(uid == slurmdbd_conf->slurm_user_id + if((uid == slurmdbd_conf->slurm_user_id || uid == 0) || assoc_mgr_get_admin_level(mysql_conn, uid) >= ACCT_ADMIN_OPERATOR) is_admin = 1; @@ -3944,7 +3946,7 @@ extern List acct_storage_p_remove_coord(mysql_conn_t *mysql_conn, uint32_t uid, * set if they are an operator or greater and then * check it below after the query. */ - if(uid == slurmdbd_conf->slurm_user_id + if((uid == slurmdbd_conf->slurm_user_id || uid == 0) || assoc_mgr_get_admin_level(mysql_conn, uid) >= ACCT_ADMIN_OPERATOR) is_admin = 1; @@ -4431,7 +4433,7 @@ extern List acct_storage_p_remove_associations( * set if they are an operator or greater and then * check it below after the query. */ - if(uid == slurmdbd_conf->slurm_user_id + if((uid == slurmdbd_conf->slurm_user_id || uid == 0) || assoc_mgr_get_admin_level(mysql_conn, uid) >= ACCT_ADMIN_OPERATOR) is_admin = 1; diff --git a/src/slurmdbd/proc_req.c b/src/slurmdbd/proc_req.c index ab9e00ac9da1d3ede938b859f67eae381426d187..f758a169a73566de91b73b7f8adde119d72c9d96 100644 --- a/src/slurmdbd/proc_req.c +++ b/src/slurmdbd/proc_req.c @@ -328,7 +328,7 @@ static int _add_accounts(void *db_conn, char *comment = NULL; debug2("DBD_ADD_ACCOUNTS: called"); - if(*uid != slurmdbd_conf->slurm_user_id + if((*uid != slurmdbd_conf->slurm_user_id && *uid != 0) && assoc_mgr_get_admin_level(db_conn, *uid) < ACCT_ADMIN_OPERATOR) { acct_user_rec_t user; @@ -383,7 +383,7 @@ static int _add_account_coords(void *db_conn, } debug2("DBD_ADD_ACCOUNT_COORDS: called"); - if(*uid != slurmdbd_conf->slurm_user_id + if((*uid != slurmdbd_conf->slurm_user_id && *uid != 0) && assoc_mgr_get_admin_level(db_conn, *uid) < ACCT_ADMIN_OPERATOR) { ListIterator itr = NULL; ListIterator itr2 = NULL; @@ -455,7 +455,7 @@ static int _add_assocs(void *db_conn, goto end_it; } - if(*uid != slurmdbd_conf->slurm_user_id + if((*uid != slurmdbd_conf->slurm_user_id && *uid != 0) && assoc_mgr_get_admin_level(db_conn, *uid) < ACCT_ADMIN_OPERATOR) { ListIterator itr = NULL; ListIterator itr2 = NULL; @@ -518,7 +518,7 @@ static int _add_clusters(void *db_conn, char *comment = NULL; debug2("DBD_ADD_CLUSTERS: called"); - if(*uid != slurmdbd_conf->slurm_user_id + if((*uid != slurmdbd_conf->slurm_user_id && *uid != 0) && assoc_mgr_get_admin_level(db_conn, *uid) < ACCT_ADMIN_SUPER_USER) { comment = "Your user doesn't have privilege to preform this action"; error("%s", comment); @@ -552,7 +552,7 @@ static int _add_qos(void *db_conn, char *comment = NULL; debug2("DBD_ADD_QOS: called"); - if(*uid != slurmdbd_conf->slurm_user_id + if((*uid != slurmdbd_conf->slurm_user_id && *uid != 0) && (assoc_mgr_get_admin_level(db_conn, *uid) < ACCT_ADMIN_SUPER_USER)) { comment = "Your user doesn't have privilege to preform this action"; @@ -586,7 +586,7 @@ static int _add_users(void *db_conn, dbd_list_msg_t *get_msg = NULL; char *comment = NULL; debug2("DBD_ADD_USERS: called"); - if(*uid != slurmdbd_conf->slurm_user_id + if((*uid != slurmdbd_conf->slurm_user_id && *uid != 0) && assoc_mgr_get_admin_level(db_conn, *uid) < ACCT_ADMIN_OPERATOR) { acct_user_rec_t user; @@ -634,7 +634,7 @@ static int _cluster_procs(void *db_conn, int rc = SLURM_SUCCESS; char *comment = NULL; - if (*uid != slurmdbd_conf->slurm_user_id) { + if ((*uid != slurmdbd_conf->slurm_user_id && *uid != 0)) { comment = "DBD_CLUSTER_PROCS message from invalid uid"; error("DBD_CLUSTER_PROCS message from invalid uid %u", *uid); rc = ESLURM_ACCESS_DENIED; @@ -986,7 +986,7 @@ static int _flush_jobs(void *db_conn, int rc = SLURM_SUCCESS; char *comment = NULL; - if (*uid != slurmdbd_conf->slurm_user_id) { + if ((*uid != slurmdbd_conf->slurm_user_id && *uid != 0)) { comment = "DBD_FLUSH_JOBS message from invalid uid"; error("DBD_FLUSH_JOBS message from invalid uid %u", *uid); rc = ESLURM_ACCESS_DENIED; @@ -1248,7 +1248,7 @@ static int _modify_accounts(void *db_conn, char *comment = NULL; debug2("DBD_MODIFY_ACCOUNTS: called"); - if(*uid != slurmdbd_conf->slurm_user_id + if((*uid != slurmdbd_conf->slurm_user_id && *uid != 0) && assoc_mgr_get_admin_level(db_conn, *uid) < ACCT_ADMIN_OPERATOR) { comment = "Your user doesn't have privilege to preform this action"; error("%s", comment); @@ -1362,7 +1362,7 @@ static int _modify_clusters(void *db_conn, dbd_modify_msg_t *get_msg = NULL; char *comment = NULL; - if(*uid != slurmdbd_conf->slurm_user_id + if((*uid != slurmdbd_conf->slurm_user_id && *uid != 0) && assoc_mgr_get_admin_level(db_conn, *uid) < ACCT_ADMIN_SUPER_USER) { comment = "Your user doesn't have privilege to preform this action"; @@ -1425,7 +1425,7 @@ static int _modify_users(void *db_conn, debug2("DBD_MODIFY_USERS: called"); - if(*uid != slurmdbd_conf->slurm_user_id + if((*uid != slurmdbd_conf->slurm_user_id && *uid != 0) && assoc_mgr_get_admin_level(db_conn, *uid) < ACCT_ADMIN_OPERATOR) { comment = "Your user doesn't have privilege to preform this action"; error("%s", comment); @@ -1445,7 +1445,7 @@ static int _modify_users(void *db_conn, } if(((acct_user_rec_t *)get_msg->rec)->admin_level != ACCT_ADMIN_NOTSET - && *uid != slurmdbd_conf->slurm_user_id + && (*uid != slurmdbd_conf->slurm_user_id && *uid != 0) && assoc_mgr_get_admin_level(db_conn, *uid) < ((acct_user_rec_t *)get_msg->rec)->admin_level) { comment = "You have to be the same or higher admin level to change another persons"; @@ -1642,7 +1642,7 @@ static int _remove_accounts(void *db_conn, debug2("DBD_REMOVE_ACCOUNTS: called"); - if(*uid != slurmdbd_conf->slurm_user_id + if((*uid != slurmdbd_conf->slurm_user_id && *uid != 0) && assoc_mgr_get_admin_level(db_conn, *uid) < ACCT_ADMIN_OPERATOR) { comment = "Your user doesn't have privilege to preform this action"; error("%s", comment); @@ -1814,7 +1814,7 @@ static int _remove_clusters(void *db_conn, debug2("DBD_REMOVE_CLUSTERS: called"); - if(*uid != slurmdbd_conf->slurm_user_id + if((*uid != slurmdbd_conf->slurm_user_id && *uid != 0) && assoc_mgr_get_admin_level(db_conn, *uid) < ACCT_ADMIN_SUPER_USER) { comment = "Your user doesn't have privilege to preform this action"; @@ -1875,7 +1875,7 @@ static int _remove_qos(void *db_conn, debug2("DBD_REMOVE_QOS: called"); - if(*uid != slurmdbd_conf->slurm_user_id + if((*uid != slurmdbd_conf->slurm_user_id && *uid != 0) && assoc_mgr_get_admin_level(db_conn, *uid) < ACCT_ADMIN_SUPER_USER) { comment = "Your user doesn't have privilege to preform this action"; @@ -1936,7 +1936,7 @@ static int _remove_users(void *db_conn, debug2("DBD_REMOVE_USERS: called"); - if(*uid != slurmdbd_conf->slurm_user_id + if((*uid != slurmdbd_conf->slurm_user_id && *uid != 0) && assoc_mgr_get_admin_level(db_conn, *uid) < ACCT_ADMIN_OPERATOR) { comment = "Your user doesn't have privilege to preform this action"; error("%s", comment); @@ -1995,7 +1995,7 @@ static int _roll_usage(void *db_conn, info("DBD_ROLL_USAGE: called"); - if(*uid != slurmdbd_conf->slurm_user_id + if((*uid != slurmdbd_conf->slurm_user_id && *uid != 0) && assoc_mgr_get_admin_level(db_conn, *uid) < ACCT_ADMIN_OPERATOR) { comment = "Your user doesn't have privilege to preform this action"; error("%s", comment); diff --git a/src/slurmdbd/read_config.c b/src/slurmdbd/read_config.c index 5df989cf6a5d49865b36a840210eab5cb83a6e95..83f1c587358bab4314829343004527f048130bc5 100644 --- a/src/slurmdbd/read_config.c +++ b/src/slurmdbd/read_config.c @@ -154,7 +154,8 @@ extern int read_slurmdbd_conf(void) } s_p_get_uint16(&slurmdbd_conf->archive_age, "ArchiveAge", tbl); - s_p_get_string(&slurmdbd_conf->archive_script, "ArchiveScript", tbl); + s_p_get_string(&slurmdbd_conf->archive_script, "ArchiveScript", + tbl); s_p_get_string(&slurmdbd_conf->auth_info, "AuthInfo", tbl); s_p_get_string(&slurmdbd_conf->auth_type, "AuthType", tbl); s_p_get_string(&slurmdbd_conf->dbd_host, "DbdHost", tbl); @@ -175,7 +176,8 @@ extern int read_slurmdbd_conf(void) s_p_get_string(&slurmdbd_conf->plugindir, "PluginDir", tbl); s_p_get_string(&slurmdbd_conf->slurm_user_name, "SlurmUser", tbl); - if (!s_p_get_uint16(&slurmdbd_conf->step_purge, "StepPurge", tbl)) + if (!s_p_get_uint16(&slurmdbd_conf->step_purge, "StepPurge", + tbl)) slurmdbd_conf->step_purge = DEFAULT_SLURMDBD_STEP_PURGE; s_p_get_string(&slurmdbd_conf->storage_host, "StorageHost", tbl); @@ -197,7 +199,8 @@ extern int read_slurmdbd_conf(void) if (slurmdbd_conf->auth_type == NULL) slurmdbd_conf->auth_type = xstrdup(DEFAULT_SLURMDBD_AUTHTYPE); if (slurmdbd_conf->dbd_host == NULL) { - error("slurmdbd.conf lacks DbdHost parameter, using 'localhost'"); + error("slurmdbd.conf lacks DbdHost parameter, " + "using 'localhost'"); slurmdbd_conf->dbd_host = xstrdup("localhost"); } if (slurmdbd_conf->dbd_addr == NULL)