7
#include <slurm/slurm.h>
8
#include <slurm/slurmdb.h>
9
#include "slurmdb-perl.h"
11
#include "const-c.inc"
13
extern void *slurm_xmalloc(size_t, const char *, int, const char *);
14
extern void slurmdb_destroy_association_cond(void *object);
15
extern void slurmdb_destroy_cluster_cond(void *object);
16
extern void slurmdb_destroy_job_cond(void *object);
17
extern void slurmdb_destroy_user_cond(void *object);
20
MODULE = Slurmdb PACKAGE = Slurmdb PREFIX=slurmdb_
26
slurmdb_connection_get()
29
slurmdb_connection_close(db_conn)
33
slurmdb_clusters_get(db_conn, conditions)
41
slurmdb_cluster_cond_t *cluster_cond = (slurmdb_cluster_cond_t*)
42
slurm_xmalloc(sizeof(slurmdb_cluster_cond_t), __FILE__,
43
__LINE__, "slurmdb_clusters_get");
44
slurmdb_cluster_rec_t *rec = NULL;
46
if (hv_to_cluster_cond(conditions, cluster_cond) < 0) {
49
results = (AV*)sv_2mortal((SV*)newAV());
51
list = slurmdb_clusters_get(db_conn, cluster_cond);
53
itr = slurm_list_iterator_create(list);
55
while ((rec = slurm_list_next(itr))) {
56
rh = (HV *)sv_2mortal((SV*)newHV());
57
if (cluster_rec_to_hv(rec, rh) < 0) {
60
av_push(results, newRV((SV*)rh));
62
slurm_list_destroy(list);
64
RETVAL = newRV((SV*)results);
65
slurmdb_destroy_cluster_cond(cluster_cond);
70
slurmdb_report_cluster_account_by_user(db_conn, assoc_condition)
76
slurmdb_association_cond_t *assoc_cond = (slurmdb_association_cond_t*)
77
slurm_xmalloc(sizeof(slurmdb_association_cond_t), __FILE__,
78
__LINE__, "slurmdb_report_cluster_account_by_user");
80
if (hv_to_assoc_cond(assoc_condition, assoc_cond) < 0) {
83
results = (AV*)sv_2mortal((SV*)newAV());
85
list = slurmdb_report_cluster_account_by_user(db_conn, assoc_cond);
87
if (report_cluster_rec_list_to_av(list, results) < 0) {
90
slurm_list_destroy(list);
92
RETVAL = newRV((SV*)results);
93
slurmdb_destroy_association_cond(assoc_cond);
98
slurmdb_report_cluster_user_by_account(db_conn, assoc_condition)
104
slurmdb_association_cond_t *assoc_cond = (slurmdb_association_cond_t*)
105
slurm_xmalloc(sizeof(slurmdb_association_cond_t), __FILE__,
106
__LINE__, "slurmdb_report_cluster_user_by_account");
108
if (hv_to_assoc_cond(assoc_condition, assoc_cond) < 0) {
111
results = (AV*)sv_2mortal((SV*)newAV());
113
list = slurmdb_report_cluster_user_by_account(db_conn, assoc_cond);
115
if (report_cluster_rec_list_to_av(list, results) < 0) {
118
slurm_list_destroy(list);
120
RETVAL = newRV((SV*)results);
121
slurmdb_destroy_association_cond(assoc_cond);
126
slurmdb_report_job_sizes_grouped_by_top_account(db_conn, job_condition, grouping_array, flat_view)
134
List grouping_list = slurm_list_create(NULL);
135
slurmdb_job_cond_t *job_cond = (slurmdb_job_cond_t*)
136
slurm_xmalloc(sizeof(slurmdb_job_cond_t), __FILE__,
137
__LINE__, "slurmdb_report_job_sizes_grouped_by_top_account");
138
if (hv_to_job_cond(job_condition, job_cond) < 0) {
141
if (av_to_cluster_grouping_list(grouping_array, grouping_list) < 0) {
144
results = (AV*)sv_2mortal((SV*)newAV());
146
list = slurmdb_report_job_sizes_grouped_by_top_account(db_conn,
147
job_cond, grouping_list, flat_view);
149
if (cluster_grouping_list_to_av(list, results) < 0) {
152
slurm_list_destroy(list);
154
RETVAL = newRV((SV*)results);
155
slurmdb_destroy_job_cond(job_cond);
156
slurm_list_destroy(grouping_list);
161
slurmdb_report_user_top_usage(db_conn, user_condition, group_accounts)
168
slurmdb_user_cond_t* user_cond = (slurmdb_user_cond_t*)
169
slurm_xmalloc(sizeof(slurmdb_user_cond_t), __FILE__,
170
__LINE__, "slurmdb_report_user_top_usage");
171
user_cond->assoc_cond = (slurmdb_association_cond_t*)
172
slurm_xmalloc(sizeof(slurmdb_association_cond_t), __FILE__,
173
__LINE__, "slurmdb_report_user_top_usage");
174
if (hv_to_user_cond(user_condition, user_cond) < 0) {
177
results = (AV*)sv_2mortal((SV*)newAV());
179
list = slurmdb_report_user_top_usage(db_conn, user_cond,
182
if (report_cluster_rec_list_to_av(list, results) < 0) {
185
slurm_list_destroy(list);
187
RETVAL = newRV((SV*)results);
188
slurmdb_destroy_user_cond(user_cond);