diff --git a/slurm/slurm.h.in b/slurm/slurm.h.in index a9e7cd1ce81a217945e15bf3468026337eb453d9..465d04087705169009403a2506e7200e2bd2bb68 100644 --- a/slurm/slurm.h.in +++ b/slurm/slurm.h.in @@ -1052,6 +1052,13 @@ extern void * slurm_list_next PARAMS((ListIterator i)); */ extern void slurm_list_sort PARAMS((List l, ListCmpF f)); +/* slurm_list_pop(): + * + * Pops the data item at the top of the stack [l]. + * Returns the data's ptr, or NULL if the stack is empty. + */ +extern void * slurm_list_pop PARAMS((List l)); + /*****************************************************************************\ * SLURM BITSTR FUNCTIONS \*****************************************************************************/ diff --git a/slurm/slurmdb.h b/slurm/slurmdb.h index 0b2ca48ff0a87cba1bd6516650d69755e0ff7980..0835d6f4592205b4587d79c6d5f42b97e695336e 100644 --- a/slurm/slurmdb.h +++ b/slurm/slurmdb.h @@ -1279,8 +1279,66 @@ extern List slurmdb_reservations_get(void *db_conn, */ extern List slurmdb_txn_get(void *db_conn, slurmdb_txn_cond_t *txn_cond); +/* + * Get information about requested cluster(s). Similar to + * slurmdb_clusters_get, but should be used when setting up the + * working_cluster_rec. It replaces the plugin_id_select with + * the position of the id in the select plugin array, as well as sets up the + * control_addr and dim_size parts of the structure. + * + * IN: cluster_names - comman separated string of cluster names + * RET: List of slurmdb_cluster_rec_t * + * note List needs to bbe freed with slurm_list_destroy() when called + */ +extern List slurmdb_get_info_cluster(char *cluster_names); /************** helper functions **************/ +extern void slurmdb_destroy_user_defs(void *object); +extern void slurmdb_destroy_user_rec(void *object); +extern void slurmdb_destroy_account_rec(void *object); +extern void slurmdb_destroy_coord_rec(void *object); +extern void slurmdb_destroy_clus_res_rec(void *object); +extern void slurmdb_destroy_cluster_accounting_rec(void *object); +extern void slurmdb_destroy_cluster_rec(void *object); +extern void slurmdb_destroy_accounting_rec(void *object); +extern void slurmdb_destroy_association_rec(void *object); +extern void slurmdb_destroy_event_rec(void *object); +extern void slurmdb_destroy_job_rec(void *object); +extern void slurmdb_destroy_qos_rec(void *object); +extern void slurmdb_destroy_reservation_rec(void *object); +extern void slurmdb_destroy_step_rec(void *object); +extern void slurmdb_destroy_res_rec(void *object); +extern void slurmdb_destroy_txn_rec(void *object); +extern void slurmdb_destroy_wckey_rec(void *object); +extern void slurmdb_destroy_archive_rec(void *object); +extern void slurmdb_destroy_report_assoc_rec(void *object); +extern void slurmdb_destroy_report_user_rec(void *object); +extern void slurmdb_destroy_report_cluster_rec(void *object); + +extern void slurmdb_destroy_user_cond(void *object); +extern void slurmdb_destroy_account_cond(void *object); +extern void slurmdb_destroy_cluster_cond(void *object); +extern void slurmdb_destroy_association_cond(void *object); +extern void slurmdb_destroy_event_cond(void *object); +extern void slurmdb_destroy_job_cond(void *object); +extern void slurmdb_destroy_job_modify_cond(void *object); +extern void slurmdb_destroy_qos_cond(void *object); +extern void slurmdb_destroy_reservation_cond(void *object); +extern void slurmdb_destroy_res_cond(void *object); +extern void slurmdb_destroy_txn_cond(void *object); +extern void slurmdb_destroy_wckey_cond(void *object); +extern void slurmdb_destroy_archive_cond(void *object); + +extern void slurmdb_destroy_update_object(void *object); +extern void slurmdb_destroy_used_limits(void *object); +extern void slurmdb_destroy_update_shares_rec(void *object); +extern void slurmdb_destroy_print_tree(void *object); +extern void slurmdb_destroy_hierarchical_rec(void *object); +extern void slurmdb_destroy_selected_step(void *object); + +extern void slurmdb_destroy_report_job_grouping(void *object); +extern void slurmdb_destroy_report_acct_grouping(void *object); +extern void slurmdb_destroy_report_cluster_grouping(void *object); extern void slurmdb_init_association_rec(slurmdb_association_rec_t *assoc, bool free_it); @@ -1298,6 +1356,7 @@ extern void slurmdb_init_cluster_cond(slurmdb_cluster_cond_t *cluster, bool free_it); extern void slurmdb_init_res_cond(slurmdb_res_cond_t *cluster, bool free_it); + /* The next two functions have pointers to assoc_list so do not * destroy assoc_list before using the list returned from this function. */ diff --git a/src/common/slurmdb_defs.h b/src/common/slurmdb_defs.h index ec729c7cbd04888c7bda750081cb46e1e2533206..1def7d20fa2e942944f413743e5a39dec56124c4 100644 --- a/src/common/slurmdb_defs.h +++ b/src/common/slurmdb_defs.h @@ -55,70 +55,6 @@ extern slurmdb_step_rec_t *slurmdb_create_step_rec(); extern slurmdb_job_rec_t *slurmdb_create_job_rec(); -extern void slurmdb_destroy_user_defs(void *object); -extern void slurmdb_destroy_user_rec(void *object); -extern void slurmdb_destroy_account_rec(void *object); -extern void slurmdb_destroy_coord_rec(void *object); -extern void slurmdb_destroy_clus_res_rec(void *object); -extern void slurmdb_destroy_cluster_accounting_rec(void *object); -extern void slurmdb_destroy_cluster_rec(void *object); -extern void slurmdb_destroy_accounting_rec(void *object); -extern void slurmdb_destroy_association_rec(void *object); -extern void slurmdb_destroy_event_rec(void *object); -extern void slurmdb_destroy_job_rec(void *object); -extern void slurmdb_destroy_qos_rec(void *object); -extern void slurmdb_destroy_reservation_rec(void *object); -extern void slurmdb_destroy_step_rec(void *object); -extern void slurmdb_destroy_res_rec(void *object); -extern void slurmdb_destroy_txn_rec(void *object); -extern void slurmdb_destroy_wckey_rec(void *object); -extern void slurmdb_destroy_archive_rec(void *object); -extern void slurmdb_destroy_report_assoc_rec(void *object); -extern void slurmdb_destroy_report_user_rec(void *object); -extern void slurmdb_destroy_report_cluster_rec(void *object); - -extern void slurmdb_destroy_user_cond(void *object); -extern void slurmdb_destroy_account_cond(void *object); -extern void slurmdb_destroy_cluster_cond(void *object); -extern void slurmdb_destroy_association_cond(void *object); -extern void slurmdb_destroy_event_cond(void *object); -extern void slurmdb_destroy_job_cond(void *object); -extern void slurmdb_destroy_job_modify_cond(void *object); -extern void slurmdb_destroy_qos_cond(void *object); -extern void slurmdb_destroy_reservation_cond(void *object); -extern void slurmdb_destroy_res_cond(void *object); -extern void slurmdb_destroy_txn_cond(void *object); -extern void slurmdb_destroy_wckey_cond(void *object); -extern void slurmdb_destroy_archive_cond(void *object); - -extern void slurmdb_destroy_update_object(void *object); -extern void slurmdb_destroy_used_limits(void *object); -extern void slurmdb_destroy_update_shares_rec(void *object); -extern void slurmdb_destroy_print_tree(void *object); -extern void slurmdb_destroy_hierarchical_rec(void *object); -extern void slurmdb_destroy_selected_step(void *object); - -extern void slurmdb_destroy_report_job_grouping(void *object); -extern void slurmdb_destroy_report_acct_grouping(void *object); -extern void slurmdb_destroy_report_cluster_grouping(void *object); - -extern void slurmdb_init_association_rec(slurmdb_association_rec_t *assoc, - bool free_it); -extern void slurmdb_init_clus_res_rec(slurmdb_clus_res_rec_t *clus_res, - bool free_it); -extern void slurmdb_init_cluster_rec(slurmdb_cluster_rec_t *cluster, - bool free_it); -extern void slurmdb_init_qos_rec(slurmdb_qos_rec_t *qos, - bool free_it); -extern void slurmdb_init_res_rec(slurmdb_res_rec_t *res, - bool free_it); -extern void slurmdb_init_wckey_rec(slurmdb_wckey_rec_t *wckey, - bool free_it); - -extern void slurmdb_init_cluster_cond(slurmdb_cluster_cond_t *cluster, - bool free_it); - -extern List slurmdb_get_info_cluster(char *cluster_name); extern char *slurmdb_qos_str(List qos_list, uint32_t level); extern uint32_t str_2_slurmdb_qos(List qos_list, char *level); extern char *slurmdb_qos_flags_str(uint32_t flags); diff --git a/src/db_api/Makefile.am b/src/db_api/Makefile.am index 48e6486d670ccf17465e732f6c1a66c84d1d32f9..84f1425122793c2921d455838c5fadc3a3f5be75 100644 --- a/src/db_api/Makefile.am +++ b/src/db_api/Makefile.am @@ -95,6 +95,7 @@ $(VERSION_SCRIPT) : (echo "{ global:"; \ echo " slurm_*;"; \ echo " slurmdb_*;"; \ + echo " working_cluster_rec;"; \ echo " local: *;"; \ echo "};") > $(VERSION_SCRIPT) diff --git a/src/db_api/Makefile.in b/src/db_api/Makefile.in index 67f2f9b854f97b0bd0f12de4f5693a6de504b7d8..578696a36f9cb1b3dfea846c2efefffc83433772 100644 --- a/src/db_api/Makefile.in +++ b/src/db_api/Makefile.in @@ -915,6 +915,7 @@ $(VERSION_SCRIPT) : (echo "{ global:"; \ echo " slurm_*;"; \ echo " slurmdb_*;"; \ + echo " working_cluster_rec;"; \ echo " local: *;"; \ echo "};") > $(VERSION_SCRIPT)