diff --git a/contribs/perlapi/libslurmdb/perl/cluster.c b/contribs/perlapi/libslurmdb/perl/cluster.c index 0a15af4cf9808766a10abb5a83d9f7587e20bf5a..86d64004c127735a9c413e75d36efd59a059b40c 100644 --- a/contribs/perlapi/libslurmdb/perl/cluster.c +++ b/contribs/perlapi/libslurmdb/perl/cluster.c @@ -12,6 +12,7 @@ extern char* slurm_xstrdup(const char* str); extern int slurmdb_report_set_start_end_time(time_t* start, time_t* end); +extern char *slurmdb_get_qos_complete_str_bitstr(List qos_list, bitstr_t *valid_qos); int av_to_cluster_grouping_list(AV* av, List grouping_list) @@ -778,3 +779,55 @@ job_rec_to_hv(slurmdb_job_rec_t* rec, HV* hv) return 0; } + +int +hv_to_qos_cond(HV* hv, slurmdb_qos_cond_t* qos_cond) +{ + AV* element_av; + char* str = NULL; + int i, elements = 0; + + FETCH_FIELD(hv, qos_cond, preempt_mode, uint16_t, FALSE); + FETCH_FIELD(hv, qos_cond, with_deleted, uint16_t, FALSE); + + FETCH_LIST_FIELD(hv, qos_cond, description_list); + FETCH_LIST_FIELD(hv, qos_cond, id_list); + FETCH_LIST_FIELD(hv, qos_cond, name_list); + + return 0; +} + +int +qos_rec_to_hv(slurmdb_qos_rec_t* rec, HV* hv, List all_qos) +{ + char *preempt = NULL; + preempt = slurmdb_get_qos_complete_str_bitstr(all_qos, rec->preempt_bitstr); + hv_store_charp(hv, "preempt", preempt); + + STORE_FIELD(hv, rec, description, charp); + STORE_FIELD(hv, rec, id, uint32_t); + STORE_FIELD(hv, rec, flags, uint32_t); + STORE_FIELD(hv, rec, grace_time, uint32_t); + STORE_FIELD(hv, rec, grp_jobs, uint32_t); + STORE_FIELD(hv, rec, grp_submit_jobs, uint32_t); + STORE_FIELD(hv, rec, grp_tres, charp); + STORE_FIELD(hv, rec, grp_tres_mins, charp); + STORE_FIELD(hv, rec, grp_tres_run_mins, charp); + STORE_FIELD(hv, rec, grp_wall, uint32_t); + STORE_FIELD(hv, rec, max_jobs_pu, uint32_t); + STORE_FIELD(hv, rec, max_submit_jobs_pu, uint32_t); + STORE_FIELD(hv, rec, max_tres_mins_pj, charp); + STORE_FIELD(hv, rec, max_tres_pj, charp); + STORE_FIELD(hv, rec, max_tres_pn, charp); + STORE_FIELD(hv, rec, max_tres_pu, charp); + STORE_FIELD(hv, rec, max_tres_run_mins_pu,charp); + STORE_FIELD(hv, rec, max_wall_pj, uint32_t); + STORE_FIELD(hv, rec, min_tres_pj, charp); + STORE_FIELD(hv, rec, name, charp); + STORE_FIELD(hv, rec, preempt_mode, uint16_t); + STORE_FIELD(hv, rec, priority, uint32_t); + STORE_FIELD(hv, rec, usage_factor, double); + STORE_FIELD(hv, rec, usage_thres, double); + + return 0; +}