From 01d7119c1cc083198792d6d8801a349708e56bea Mon Sep 17 00:00:00 2001 From: Danny Auble <da@schedmd.com> Date: Thu, 20 Feb 2014 16:50:40 -0800 Subject: [PATCH] Consolidate like code --- src/sacctmgr/account_functions.c | 45 ++++------------------------ src/sacctmgr/common.c | 49 +++++++++++++++++++++++++++++++ src/sacctmgr/sacctmgr.h | 1 + src/sacctmgr/user_functions.c | 50 +++++--------------------------- 4 files changed, 64 insertions(+), 81 deletions(-) diff --git a/src/sacctmgr/account_functions.c b/src/sacctmgr/account_functions.c index 39ec6bb0705..204036e84f5 100644 --- a/src/sacctmgr/account_functions.c +++ b/src/sacctmgr/account_functions.c @@ -465,46 +465,13 @@ extern int sacctmgr_add_account(int argc, char *argv[]) } list_iterator_destroy(itr_c); list_destroy(tmp_list); - } else { - List temp_list = NULL; - slurmdb_cluster_cond_t cluster_cond; - - slurmdb_init_cluster_cond(&cluster_cond, 0); - cluster_cond.cluster_list = cluster_list; - - temp_list = acct_storage_g_get_clusters(db_conn, my_uid, - &cluster_cond); - - itr_c = list_iterator_create(cluster_list); - itr = list_iterator_create(temp_list); - while((cluster = list_next(itr_c))) { - slurmdb_cluster_rec_t *cluster_rec = NULL; - - list_iterator_reset(itr); - while((cluster_rec = list_next(itr))) { - if (!strcasecmp(cluster_rec->name, cluster)) - break; - } - if (!cluster_rec) { - exit_code=1; - fprintf(stderr, " This cluster '%s' " - "doesn't exist.\n" - " Contact your admin " - "to add it to accounting.\n", - cluster); - list_delete_item(itr_c); - } - } - list_iterator_destroy(itr); - list_iterator_destroy(itr_c); - list_destroy(temp_list); + } else if (sacctmgr_validate_cluster_list(cluster_list) + != SLURM_SUCCESS) { + slurmdb_destroy_association_rec(start_assoc); + slurmdb_destroy_account_rec(start_acct); + list_destroy(local_account_list); - if (!list_count(cluster_list)) { - slurmdb_destroy_association_rec(start_assoc); - slurmdb_destroy_account_rec(start_acct); - list_destroy(local_account_list); - return SLURM_ERROR; - } + return SLURM_ERROR; } diff --git a/src/sacctmgr/common.c b/src/sacctmgr/common.c index 6e52f8e11ec..7ca9be5bc0c 100644 --- a/src/sacctmgr/common.c +++ b/src/sacctmgr/common.c @@ -1636,3 +1636,52 @@ extern List sacctmgr_process_format_list(List format_list) return print_fields_list; } + +extern int sacctmgr_validate_cluster_list(List cluster_list) +{ + List temp_list = NULL; + char *cluster = NULL; + int rc = SLURM_SUCCESS; + ListIterator itr = NULL, itr_c = NULL; + + if (cluster_list) { + slurmdb_cluster_cond_t cluster_cond; + slurmdb_init_cluster_cond(&cluster_cond, 0); + cluster_cond.cluster_list = cluster_list; + + temp_list = acct_storage_g_get_clusters(db_conn, my_uid, + &cluster_cond); + } else + temp_list = acct_storage_g_get_clusters(db_conn, my_uid, + NULL); + + + itr_c = list_iterator_create(cluster_list); + itr = list_iterator_create(temp_list); + while ((cluster = list_next(itr_c))) { + slurmdb_cluster_rec_t *cluster_rec = NULL; + + list_iterator_reset(itr); + while ((cluster_rec = list_next(itr))) { + if (!strcasecmp(cluster_rec->name, cluster)) + break; + } + if (!cluster_rec) { + exit_code=1; + fprintf(stderr, " This cluster '%s' " + "doesn't exist.\n" + " Contact your admin " + "to add it to accounting.\n", + cluster); + list_delete_item(itr_c); + } + } + list_iterator_destroy(itr); + list_iterator_destroy(itr_c); + list_destroy(temp_list); + + if (!list_count(cluster_list)) + rc = SLURM_ERROR; + + return rc; +} diff --git a/src/sacctmgr/sacctmgr.h b/src/sacctmgr/sacctmgr.h index 6dd4d1498e2..d569605e8ae 100644 --- a/src/sacctmgr/sacctmgr.h +++ b/src/sacctmgr/sacctmgr.h @@ -289,6 +289,7 @@ extern void sacctmgr_print_qos_limits(slurmdb_qos_rec_t *qos); extern int sacctmgr_remove_assoc_usage(slurmdb_association_cond_t *assoc_cond); extern int sort_coord_list(void *, void *); extern List sacctmgr_process_format_list(List format_list); +extern int sacctmgr_validate_cluster_list(List cluster_list); /* you need to free the objects returned from these functions */ extern slurmdb_association_rec_t *sacctmgr_find_account_base_assoc( diff --git a/src/sacctmgr/user_functions.c b/src/sacctmgr/user_functions.c index 198e3b4bf80..0f502447971 100644 --- a/src/sacctmgr/user_functions.c +++ b/src/sacctmgr/user_functions.c @@ -778,48 +778,14 @@ extern int sacctmgr_add_user(int argc, char *argv[]) list_destroy(local_acct_list); return SLURM_ERROR; } - } else { - List temp_list = NULL; - slurmdb_cluster_cond_t cluster_cond; - - slurmdb_init_cluster_cond(&cluster_cond, 0); - cluster_cond.cluster_list = assoc_cond->cluster_list; - - temp_list = acct_storage_g_get_clusters(db_conn, my_uid, - &cluster_cond); - - itr_c = list_iterator_create(assoc_cond->cluster_list); - itr = list_iterator_create(temp_list); - while((cluster = list_next(itr_c))) { - slurmdb_cluster_rec_t *cluster_rec = NULL; - - list_iterator_reset(itr); - while((cluster_rec = list_next(itr))) { - if (!strcasecmp(cluster_rec->name, cluster)) - break; - } - if (!cluster_rec) { - exit_code=1; - fprintf(stderr, " This cluster '%s' " - "doesn't exist.\n" - " Contact your admin " - "to add it to accounting.\n", - cluster); - list_delete_item(itr_c); - } - } - list_iterator_destroy(itr); - list_iterator_destroy(itr_c); - list_destroy(temp_list); - - if (!list_count(assoc_cond->cluster_list)) { - slurmdb_destroy_wckey_cond(wckey_cond); - slurmdb_destroy_association_cond(assoc_cond); - list_destroy(local_user_list); - if (local_acct_list) - list_destroy(local_acct_list); - return SLURM_ERROR; - } + } else if (sacctmgr_validate_cluster_list(assoc_cond->cluster_list) + != SLURM_SUCCESS) { + slurmdb_destroy_wckey_cond(wckey_cond); + slurmdb_destroy_association_cond(assoc_cond); + list_destroy(local_user_list); + if (local_acct_list) + list_destroy(local_acct_list); + return SLURM_ERROR; } if (!list_count(assoc_cond->acct_list)) { -- GitLab