1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089 |
- /*****************************************************************************\
- * slurmdb.h - Interface codes and functions for slurm
- ******************************************************************************
- * Copyright (C) 2010 Lawrence Livermore National Security.
- * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
- * Written by Danny Auble da@llnl.gov, et. al.
- * CODE-OCEC-09-009. All rights reserved.
- *
- * This file is part of Slurm, a resource management program.
- * For details, see <https://slurm.schedmd.com/>.
- * Please also read the included file: DISCLAIMER.
- *
- * Slurm is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * In addition, as a special exception, the copyright holders give permission
- * to link the code of portions of this program with the OpenSSL library under
- * certain conditions as described in each individual source file, and
- * distribute linked combinations including the two. You must obey the GNU
- * General Public License in all respects for all of the code used other than
- * OpenSSL. If you modify file(s) with this exception, you may extend this
- * exception to your version of the file(s), but you are not obligated to do
- * so. If you do not wish to do so, delete this exception statement from your
- * version. If you delete this exception statement from all source files in
- * the program, then also delete it here.
- *
- * Slurm is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along
- * with Slurm; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- \*****************************************************************************/
- #ifndef _SLURMDB_H
- #define _SLURMDB_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include <slurm/slurm.h>
- typedef enum {
- SLURMDB_ADMIN_NOTSET,
- SLURMDB_ADMIN_NONE,
- SLURMDB_ADMIN_OPERATOR,
- SLURMDB_ADMIN_SUPER_USER
- } slurmdb_admin_level_t;
- typedef enum {
- SLURMDB_CLASS_NONE, /* no class given */
- SLURMDB_CLASS_CAPABILITY, /* capability cluster */
- SLURMDB_CLASS_CAPACITY, /* capacity cluster */
- SLURMDB_CLASS_CAPAPACITY, /* a cluster that is both capability
- * and capacity */
- } slurmdb_classification_type_t;
- typedef enum {
- SLURMDB_EVENT_ALL,
- SLURMDB_EVENT_CLUSTER,
- SLURMDB_EVENT_NODE
- } slurmdb_event_type_t;
- typedef enum {
- SLURMDB_PROBLEM_NOT_SET,
- SLURMDB_PROBLEM_ACCT_NO_ASSOC,
- SLURMDB_PROBLEM_ACCT_NO_USERS,
- SLURMDB_PROBLEM_USER_NO_ASSOC,
- SLURMDB_PROBLEM_USER_NO_UID,
- } slurmdb_problem_type_t;
- typedef enum {
- SLURMDB_REPORT_SORT_TIME,
- SLURMDB_REPORT_SORT_NAME
- } slurmdb_report_sort_t;
- typedef enum {
- SLURMDB_REPORT_TIME_SECS,
- SLURMDB_REPORT_TIME_MINS,
- SLURMDB_REPORT_TIME_HOURS,
- SLURMDB_REPORT_TIME_PERCENT,
- SLURMDB_REPORT_TIME_SECS_PER,
- SLURMDB_REPORT_TIME_MINS_PER,
- SLURMDB_REPORT_TIME_HOURS_PER,
- } slurmdb_report_time_format_t;
- typedef enum {
- SLURMDB_RESOURCE_NOTSET,
- SLURMDB_RESOURCE_LICENSE
- } slurmdb_resource_type_t;
- typedef enum {
- SLURMDB_UPDATE_NOTSET,
- SLURMDB_ADD_USER,
- SLURMDB_ADD_ASSOC,
- SLURMDB_ADD_COORD,
- SLURMDB_MODIFY_USER,
- SLURMDB_MODIFY_ASSOC,
- SLURMDB_REMOVE_USER,
- SLURMDB_REMOVE_ASSOC,
- SLURMDB_REMOVE_COORD,
- SLURMDB_ADD_QOS,
- SLURMDB_REMOVE_QOS,
- SLURMDB_MODIFY_QOS,
- SLURMDB_ADD_WCKEY,
- SLURMDB_REMOVE_WCKEY,
- SLURMDB_MODIFY_WCKEY,
- SLURMDB_ADD_CLUSTER,
- SLURMDB_REMOVE_CLUSTER,
- SLURMDB_REMOVE_ASSOC_USAGE,
- SLURMDB_ADD_RES,
- SLURMDB_REMOVE_RES,
- SLURMDB_MODIFY_RES,
- SLURMDB_REMOVE_QOS_USAGE,
- SLURMDB_ADD_TRES,
- SLURMDB_UPDATE_FEDS,
- } slurmdb_update_type_t;
- /* Define QOS flags */
- #define QOS_FLAG_BASE 0x0fffffff
- #define QOS_FLAG_NOTSET 0x10000000
- #define QOS_FLAG_ADD 0x20000000
- #define QOS_FLAG_REMOVE 0x40000000
- #define QOS_FLAG_PART_MIN_NODE 0x00000001
- #define QOS_FLAG_PART_MAX_NODE 0x00000002
- #define QOS_FLAG_PART_TIME_LIMIT 0x00000004
- #define QOS_FLAG_ENFORCE_USAGE_THRES 0x00000008
- #define QOS_FLAG_NO_RESERVE 0x00000010
- #define QOS_FLAG_REQ_RESV 0x00000020
- #define QOS_FLAG_DENY_LIMIT 0x00000040
- #define QOS_FLAG_OVER_PART_QOS 0x00000080
- #define QOS_FLAG_NO_DECAY 0x00000100
- #define QOS_FLAG_USAGE_FACTOR_SAFE 0x00000200
- /* Define Server Resource flags */
- #define SLURMDB_RES_FLAG_BASE 0x0fffffff /* apply to get real flags */
- #define SLURMDB_RES_FLAG_NOTSET 0x10000000
- #define SLURMDB_RES_FLAG_ADD 0x20000000
- #define SLURMDB_RES_FLAG_REMOVE 0x40000000
- /* Define Federation flags */
- #define FEDERATION_FLAG_BASE 0x0fffffff
- #define FEDERATION_FLAG_NOTSET 0x10000000
- #define FEDERATION_FLAG_ADD 0x20000000
- #define FEDERATION_FLAG_REMOVE 0x40000000
- /* SLURM CLUSTER FEDERATION STATES */
- enum cluster_fed_states {
- CLUSTER_FED_STATE_NA,
- CLUSTER_FED_STATE_ACTIVE,
- CLUSTER_FED_STATE_INACTIVE
- };
- #define CLUSTER_FED_STATE_BASE 0x000f
- #define CLUSTER_FED_STATE_FLAGS 0xfff0
- #define CLUSTER_FED_STATE_DRAIN 0x0010 /* drain cluster by not accepting
- any new jobs and waiting for all
- federated jobs to complete.*/
- #define CLUSTER_FED_STATE_REMOVE 0x0020 /* remove cluster from federation
- once cluster is drained of
- federated jobs */
- /* flags and types of resources */
- /* when we come up with some */
- /*
- * Translation of db_flags in job_record_t and flag
- * slurmdb_job_[rec|cond]_t
- */
- #define SLURMDB_JOB_FLAG_NONE 0x00000000 /* No flags */
- #define SLURMDB_JOB_CLEAR_SCHED 0x0000000f /* clear scheduling bits */
- #define SLURMDB_JOB_FLAG_NOTSET 0x00000001 /* Not set */
- #define SLURMDB_JOB_FLAG_SUBMIT 0x00000002 /* Job was started on submit */
- #define SLURMDB_JOB_FLAG_SCHED 0x00000004 /* Job was started from main
- * scheduler */
- #define SLURMDB_JOB_FLAG_BACKFILL 0x00000008 /* Job was started from backfill */
- /*
- * Slurm job condition flags
- * slurmdb_job_cond_t
- */
- #define JOBCOND_FLAG_DUP 0x00000001 /* Report duplicate job entries */
- #define JOBCOND_FLAG_NO_STEP 0x00000002 /* Don't report job step info */
- #define JOBCOND_FLAG_NO_TRUNC 0x00000004 /* Report info. without truncating
- * the time to the usage_start and
- * usage_end */
- #define JOBCOND_FLAG_RUNAWAY 0x00000008 /* Report runaway jobs only */
- #define JOBCOND_FLAG_WHOLE_HETJOB 0x00000010 /* Report info about all hetjob
- * components
- */
- #define JOBCOND_FLAG_NO_WHOLE_HETJOB 0x00000020 /* Only report info about
- * requested hetjob components
- */
- #define JOBCOND_FLAG_NO_WAIT 0x00000040 /* Tell dbd plugin not to wait
- * around for result.
- */
- #define JOBCOND_FLAG_NO_DEFAULT_USAGE 0x00000080 /* Use usage_time as the
- * submit_time of the job.
- */
- #define JOBCOND_FLAG_DBD_UID 0x00000100 /* give me the uid from the dbd
- * instead of filling it in
- * later.
- */
- /* Archive / Purge time flags */
- #define SLURMDB_PURGE_BASE 0x0000ffff /* Apply to get the number
- * of units */
- #define SLURMDB_PURGE_FLAGS 0xffff0000 /* apply to get the flags */
- #define SLURMDB_PURGE_HOURS 0x00010000 /* Purge units are in hours */
- #define SLURMDB_PURGE_DAYS 0x00020000 /* Purge units are in days */
- #define SLURMDB_PURGE_MONTHS 0x00040000 /* Purge units are in months,
- * the default */
- #define SLURMDB_PURGE_ARCHIVE 0x00080000 /* Archive before purge */
- /* Parent account should be used when calculating FairShare */
- #define SLURMDB_FS_USE_PARENT 0x7FFFFFFF
- #define SLURMDB_CLASSIFIED_FLAG 0x0100
- #define SLURMDB_CLASS_BASE 0x00ff
- /* Cluster flags */
- #define CLUSTER_FLAG_A1 0x00000001 /* UNUSED */
- #define CLUSTER_FLAG_A2 0x00000002 /* UNUSED */
- #define CLUSTER_FLAG_A3 0x00000004 /* UNUSED */
- #define CLUSTER_FLAG_A4 0x00000008 /* UNUSED */
- #define CLUSTER_FLAG_A5 0x00000010 /* UNUSED */
- #define CLUSTER_FLAG_A6 0x00000020 /* UNUSED */
- #define CLUSTER_FLAG_A7 0x00000040 /* UNUSED */
- #define CLUSTER_FLAG_MULTSD 0x00000080 /* This cluster is multiple slurmd */
- #define CLUSTER_FLAG_CRAYXT 0x00000100 /* This cluster is a ALPS cray
- * Removed v19.05 */
- #define CLUSTER_FLAG_CRAY_A 0x00000100 /* This cluster is a ALPS cray
- * Removed v19.05 */
- #define CLUSTER_FLAG_FE 0x00000200 /* This cluster is a front end system */
- #define CLUSTER_FLAG_CRAY_N 0x00000400 /* This cluster is a Native cray */
- #define CLUSTER_FLAG_FED 0x00000800 /* This cluster is in a federation. */
- #define CLUSTER_FLAG_EXT 0x00001000 /* This cluster is external */
- /* Cluster Combo flags */
- #define CLUSTER_FLAG_CRAY 0x00000500 /* This cluster is a cray.
- Combo of CRAY_A | CRAY_N */
- /********************************************/
- /* Association conditions used for queries of the database */
- /* slurmdb_tres_rec_t is used in other structures below so this needs
- * to be declared before hand.
- */
- typedef struct {
- uint64_t alloc_secs; /* total amount of secs allocated if used in an
- accounting_list */
- uint32_t rec_count; /* number of records alloc_secs is, DON'T PACK */
- uint64_t count; /* Count of TRES on a given cluster, 0 if
- * listed generically. */
- uint32_t id; /* Database ID for the TRES */
- char *name; /* Name of TRES if type is generic like GRES
- * or License. Make include optional GRES type
- * (e.g. "gpu" or "gpu:tesla") */
- char *type; /* Type of TRES (CPU, MEM, etc) */
- } slurmdb_tres_rec_t;
- /* slurmdb_assoc_cond_t is used in other structures below so
- * this needs to be declared first.
- */
- typedef struct {
- List acct_list; /* list of char * */
- List cluster_list; /* list of char * */
- List def_qos_id_list; /* list of char * */
- List format_list; /* list of char * */
- List id_list; /* list of char */
- uint16_t only_defs; /* only send back defaults */
- List parent_acct_list; /* name of parent account */
- List partition_list; /* list of char * */
- List qos_list; /* list of char * */
- time_t usage_end;
- time_t usage_start;
- List user_list; /* list of char * */
- uint16_t with_usage; /* fill in usage */
- uint16_t with_deleted; /* return deleted associations */
- uint16_t with_raw_qos; /* return a raw qos or delta_qos */
- uint16_t with_sub_accts; /* return sub acct information also */
- uint16_t without_parent_info; /* don't give me parent id/name */
- uint16_t without_parent_limits; /* don't give me limits from
- * parents */
- } slurmdb_assoc_cond_t;
- /* slurmdb_job_cond_t is used by slurmdb_archive_cond_t so it needs to
- * be defined before hand.
- */
- typedef struct {
- List acct_list; /* list of char * */
- List associd_list; /* list of char */
- List cluster_list; /* list of char * */
- List constraint_list; /* list of char * */
- uint32_t cpus_max; /* number of cpus high range */
- uint32_t cpus_min; /* number of cpus low range */
- uint32_t db_flags; /* flags sent from the slurmctld on the job */
- int32_t exitcode; /* exit code of job */
- uint32_t flags; /* Reporting flags*/
- List format_list; /* list of char * */
- List groupid_list; /* list of char * */
- List jobname_list; /* list of char * */
- uint32_t nodes_max; /* number of nodes high range */
- uint32_t nodes_min; /* number of nodes low range */
- List partition_list; /* list of char * */
- List qos_list; /* list of char * */
- List reason_list; /* list of char * */
- List resv_list; /* list of char * */
- List resvid_list; /* list of char * */
- List state_list; /* list of char * */
- List step_list; /* list of slurmdb_selected_step_t */
- uint32_t timelimit_max; /* max timelimit */
- uint32_t timelimit_min; /* min timelimit */
- time_t usage_end;
- time_t usage_start;
- char *used_nodes; /* a ranged node string where jobs ran */
- List userid_list; /* list of char * */
- List wckey_list; /* list of char * */
- } slurmdb_job_cond_t;
- /* slurmdb_stats_t needs to be defined before slurmdb_job_rec_t and
- * slurmdb_step_rec_t.
- */
- typedef struct {
- double act_cpufreq; /* contains actual average cpu frequency */
- uint64_t consumed_energy; /* contains energy consumption in joules */
- char *tres_usage_in_ave; /* average amount of usage in data */
- char *tres_usage_in_max; /* contains max amount of usage in data */
- char *tres_usage_in_max_nodeid; /* contains node number max was on */
- char *tres_usage_in_max_taskid; /* contains task number max was on */
- char *tres_usage_in_min; /* contains min amount of usage in data */
- char *tres_usage_in_min_nodeid; /* contains node number min was on */
- char *tres_usage_in_min_taskid; /* contains task number min was on */
- char *tres_usage_in_tot; /* total amount of usage in data */
- char *tres_usage_out_ave; /* average amount of usage out data */
- char *tres_usage_out_max; /* contains amount of max usage out data */
- char *tres_usage_out_max_nodeid; /* contains node number max was on */
- char *tres_usage_out_max_taskid; /* contains task number max was on */
- char *tres_usage_out_min; /* contains amount of min usage out data */
- char *tres_usage_out_min_nodeid; /* contains node number min was on */
- char *tres_usage_out_min_taskid; /* contains task number min was on */
- char *tres_usage_out_tot; /* total amount of usage out data */
- } slurmdb_stats_t;
- /************** alphabetical order of structures **************/
- typedef struct {
- slurmdb_assoc_cond_t *assoc_cond;/* use acct_list here for
- names */
- List description_list; /* list of char * */
- List organization_list; /* list of char * */
- uint16_t with_assocs;
- uint16_t with_coords;
- uint16_t with_deleted;
- } slurmdb_account_cond_t;
- typedef struct {
- List assoc_list; /* list of slurmdb_assoc_rec_t *'s */
- List coordinators; /* list of slurmdb_coord_rec_t *'s */
- char *description;
- char *name;
- char *organization;
- } slurmdb_account_rec_t;
- typedef struct {
- uint64_t alloc_secs; /* number of cpu seconds allocated */
- uint32_t id; /* association/wckey ID */
- time_t period_start; /* when this record was started */
- slurmdb_tres_rec_t tres_rec;
- } slurmdb_accounting_rec_t;
- typedef struct {
- char *archive_dir; /* location to place archive file */
- char *archive_script; /* script to run instead of default
- actions */
- slurmdb_job_cond_t *job_cond; /* conditions for the jobs to archive */
- uint32_t purge_event; /* purge events older than this in
- * months by default set the
- * SLURMDB_PURGE_ARCHIVE bit for
- * archiving */
- uint32_t purge_job; /* purge jobs older than this in months
- * by default set the
- * SLURMDB_PURGE_ARCHIVE bit for
- * archiving */
- uint32_t purge_resv; /* purge reservations older than this in months
- * by default set the
- * SLURMDB_PURGE_ARCHIVE bit for
- * archiving */
- uint32_t purge_step; /* purge steps older than this in months
- * by default set the
- * SLURMDB_PURGE_ARCHIVE bit for
- * archiving */
- uint32_t purge_suspend; /* purge suspend data older than this
- * in months by default set the
- * SLURMDB_PURGE_ARCHIVE bit for
- * archiving */
- uint32_t purge_txn; /* purge transaction data older than this
- * in months by default set the
- * SLURMDB_PURGE_ARCHIVE bit for
- * archiving */
- uint32_t purge_usage; /* purge usage data older than this
- * in months by default set the
- * SLURMDB_PURGE_ARCHIVE bit for
- * archiving */
- } slurmdb_archive_cond_t;
- typedef struct {
- char *archive_file; /* archive file containing data that was
- once flushed from the database */
- char *insert; /* an sql statement to be ran containing the
- insert of jobs since past */
- } slurmdb_archive_rec_t;
- typedef struct {
- uint64_t count; /* Count of tres on a given cluster, 0 if
- listed generically. */
- List format_list;/* list of char * */
- List id_list; /* Database ID */
- List name_list; /* Name of tres if type is generic like GRES
- or License. */
- List type_list; /* Type of tres (CPU, MEM, etc) */
- uint16_t with_deleted;
- } slurmdb_tres_cond_t;
- /* slurmdb_tres_rec_t is defined above alphabetical */
- /* slurmdb_assoc_cond_t is defined above alphabetical */
- /* This has slurmdb_assoc_rec_t's in it so we define the struct afterwards. */
- typedef struct slurmdb_assoc_usage slurmdb_assoc_usage_t;
- typedef struct slurmdb_bf_usage slurmdb_bf_usage_t;
- typedef struct slurmdb_user_rec slurmdb_user_rec_t;
- typedef struct slurmdb_assoc_rec {
- List accounting_list; /* list of slurmdb_accounting_rec_t *'s */
- char *acct; /* account/project associated to
- * assoc */
- struct slurmdb_assoc_rec *assoc_next; /* next assoc with
- * same hash index
- * based off the
- * account/user
- * DOESN'T GET PACKED */
- struct slurmdb_assoc_rec *assoc_next_id; /* next assoc with
- * same hash index
- * DOESN'T GET PACKED */
- slurmdb_bf_usage_t *bf_usage; /* data for backfill scheduler,
- * (DON'T PACK) */
- char *cluster; /* cluster associated to association */
- uint32_t def_qos_id; /* Which QOS id is this
- * associations default */
- uint32_t grp_jobs; /* max number of jobs the
- * underlying group of associations can run
- * at one time */
- uint32_t grp_jobs_accrue; /* max number of jobs the
- * underlying group of associations can have
- * accruing priority at one time */
- uint32_t grp_submit_jobs; /* max number of jobs the
- * underlying group of
- * associations can submit at
- * one time */
- char *grp_tres; /* max number of cpus the
- * underlying group of
- * associations can allocate at one time */
- uint64_t *grp_tres_ctld; /* grp_tres broken out in an array
- * based off the ordering of the total
- * number of TRES in the system
- * (DON'T PACK) */
- char *grp_tres_mins; /* max number of cpu minutes the
- * underlying group of
- * associations can run for */
- uint64_t *grp_tres_mins_ctld; /* grp_tres_mins broken out in an array
- * based off the ordering of the total
- * number of TRES in the system
- * (DON'T PACK) */
- char *grp_tres_run_mins; /* max number of cpu minutes the
- * underlying group of
- * assoiciations can
- * having running at one time */
- uint64_t *grp_tres_run_mins_ctld; /* grp_tres_run_mins
- * broken out in an array
- * based off the ordering
- * of the total number of TRES in
- * the system
- * (DON'T PACK) */
- uint32_t grp_wall; /* total time in hours the
- * underlying group of
- * associations can run for */
- uint32_t id; /* id identifing a combination of
- * user-account-cluster(-partition) */
- uint16_t is_def; /* Is this the users default assoc/acct */
- uint32_t lft; /* lft used for grouping sub
- * associations and jobs as a left
- * most container used with rgt */
- uint32_t max_jobs; /* max number of jobs this
- * association can run at one time */
- uint32_t max_jobs_accrue; /* max number of jobs this association can
- * have accruing priority time.
- */
- uint32_t max_submit_jobs; /* max number of jobs that can be
- submitted by association */
- char *max_tres_mins_pj; /* max number of cpu seconds this
- * association can have per job */
- uint64_t *max_tres_mins_ctld; /* max_tres_mins broken out in an array
- * based off the ordering of the
- * total number of TRES in the system
- * (DON'T PACK) */
- char *max_tres_run_mins; /* max number of cpu minutes this
- * association can
- * having running at one time */
- uint64_t *max_tres_run_mins_ctld; /* max_tres_run_mins
- * broken out in an array
- * based off the ordering
- * of the total number of TRES in
- * the system
- * (DON'T PACK) */
- char *max_tres_pj; /* max number of cpus this
- * association can allocate per job */
- uint64_t *max_tres_ctld; /* max_tres broken out in an array
- * based off the ordering of the
- * total number of TRES in the system
- * (DON'T PACK) */
- char *max_tres_pn; /* max number of TRES this
- * association can allocate per node */
- uint64_t *max_tres_pn_ctld; /* max_tres_pn broken out in an array
- * based off the ordering of the
- * total number of TRES in the system
- * (DON'T PACK) */
- uint32_t max_wall_pj; /* longest time this
- * association can run a job */
- uint32_t min_prio_thresh; /* Don't reserve resources for pending jobs
- * unless they have a priority equal to or
- * higher than this. */
- char *parent_acct; /* name of parent account */
- uint32_t parent_id; /* id of parent account */
- char *partition; /* optional partition in a cluster
- * associated to association */
- uint32_t priority; /* association priority */
- List qos_list; /* list of char * */
- uint32_t rgt; /* rgt used for grouping sub
- * associations and jobs as a right
- * most container used with lft */
- uint32_t shares_raw; /* number of shares allocated to
- * association */
- uint32_t uid; /* user ID */
- slurmdb_assoc_usage_t *usage;
- char *user; /* user associated to assoc */
- slurmdb_user_rec_t *user_rec; /* Cache of user record
- * soft ref - mem not managed here
- * (DON'T PACK)
- */
- } slurmdb_assoc_rec_t;
- struct slurmdb_assoc_usage {
- uint32_t accrue_cnt; /* Count of how many jobs I have accuring prio
- * (DON'T PACK for state file) */
- List children_list; /* list of children associations
- * (DON'T PACK) */
- bitstr_t *grp_node_bitmap; /* Bitmap of allocated nodes
- * (DON'T PACK) */
- uint16_t *grp_node_job_cnt; /* Count of jobs allocated on each node
- * (DON'T PACK) */
- uint64_t *grp_used_tres; /* array of active tres counts
- * (DON'T PACK for state file) */
- uint64_t *grp_used_tres_run_secs; /* array of running tres secs
- * (DON'T PACK for state file) */
- double grp_used_wall; /* group count of time used in running jobs */
- double fs_factor; /* Fairshare factor. Not used by all algorithms
- * (DON'T PACK for state file) */
- uint32_t level_shares; /* number of shares on this level of
- * the tree (DON'T PACK for state file) */
- slurmdb_assoc_rec_t *parent_assoc_ptr; /* ptr to direct
- * parent assoc
- * set in slurmctld
- * (DON'T PACK) */
- double priority_norm; /* normalized priority (DON'T PACK for
- * state file) */
- slurmdb_assoc_rec_t *fs_assoc_ptr; /* ptr to fairshare parent
- * assoc if fairshare
- * == SLURMDB_FS_USE_PARENT
- * set in slurmctld
- * (DON'T PACK) */
- double shares_norm; /* normalized shares
- * (DON'T PACK for state file) */
- uint32_t tres_cnt; /* size of the tres arrays,
- * (DON'T PACK for state file) */
- long double usage_efctv;/* effective, normalized usage
- * (DON'T PACK for state file) */
- long double usage_norm; /* normalized usage
- * (DON'T PACK for state file) */
- long double usage_raw; /* measure of TRESBillableUnits usage */
- long double *usage_tres_raw; /* measure of each TRES usage */
- uint32_t used_jobs; /* count of active jobs
- * (DON'T PACK for state file) */
- uint32_t used_submit_jobs; /* count of jobs pending or running
- * (DON'T PACK for state file) */
- /* Currently FAIR_TREE systems are defining data on
- * this struct but instead we could keep a void pointer to system
- * specific data. This would allow subsystems to define whatever data
- * they need without having to modify this struct; it would also save
- * space.
- */
- long double level_fs; /* (FAIR_TREE) Result of fairshare equation
- * compared to the association's siblings
- * (DON'T PACK for state file) */
- bitstr_t *valid_qos; /* qos available for this association
- * derived from the qos_list.
- * (DON'T PACK for state file) */
- };
- struct slurmdb_bf_usage {
- uint64_t count;
- time_t last_sched;
- };
- typedef struct {
- uint16_t classification; /* how this machine is classified */
- List cluster_list; /* list of char * */
- List federation_list; /* list of char */
- uint32_t flags;
- List format_list; /* list of char * */
- List plugin_id_select_list; /* list of char * */
- List rpc_version_list; /* list of char * */
- time_t usage_end;
- time_t usage_start;
- uint16_t with_deleted;
- uint16_t with_usage;
- } slurmdb_cluster_cond_t;
- typedef struct {
- List feature_list; /* list of cluster features */
- uint32_t id; /* id of cluster in federation */
- char *name; /* Federation name */
- void *recv; /* slurm_persist_conn_t we recv information about this
- * sibling on. (We get this information) */
- void *send; /* slurm_persist_conn_t we send information to this
- * cluster on. (We set this information) */
- uint32_t state; /* state of cluster in federation */
- bool sync_recvd; /* true sync jobs from sib has been processed. */
- bool sync_sent; /* true after sib sent sync jobs to sibling */
- } slurmdb_cluster_fed_t;
- struct slurmdb_cluster_rec {
- List accounting_list; /* list of slurmdb_cluster_accounting_rec_t *'s */
- uint16_t classification; /* how this machine is classified */
- time_t comm_fail_time; /* avoid constant error messages. For
- * convenience only. DOESN'T GET PACKED */
- slurm_addr_t control_addr; /* For convenience only.
- * DOESN'T GET PACKED */
- char *control_host;
- uint32_t control_port;
- uint16_t dimensions; /* number of dimensions this cluster is */
- int *dim_size; /* For convenience only.
- * Size of each dimension For now only on
- * a bluegene cluster. DOESN'T GET
- * PACKED, is set up in slurmdb_get_info_cluster */
- slurmdb_cluster_fed_t fed; /* Federation information */
- uint32_t flags; /* set of CLUSTER_FLAG_* */
- pthread_mutex_t lock; /* For convenience only. DOESN"T GET PACKED */
- char *name;
- char *nodes;
- uint32_t plugin_id_select; /* id of the select plugin */
- slurmdb_assoc_rec_t *root_assoc; /* root assoc for
- * cluster */
- uint16_t rpc_version; /* version of rpc this cluter is running */
- List send_rpc; /* For convenience only. DOESN'T GET PACKED */
- char *tres_str; /* comma separated list of TRES */
- };
- #ifndef __slurmdb_cluster_rec_t_defined
- # define __slurmdb_cluster_rec_t_defined
- typedef struct slurmdb_cluster_rec slurmdb_cluster_rec_t;
- #endif
- typedef struct {
- uint64_t alloc_secs; /* number of cpu seconds allocated */
- uint64_t down_secs; /* number of cpu seconds down */
- uint64_t idle_secs; /* number of cpu seconds idle */
- uint64_t over_secs; /* number of cpu seconds overcommitted */
- uint64_t pdown_secs; /* number of cpu seconds planned down */
- time_t period_start; /* when this record was started */
- uint64_t resv_secs; /* number of cpu seconds reserved */
- slurmdb_tres_rec_t tres_rec;
- } slurmdb_cluster_accounting_rec_t;
- typedef struct {
- char *cluster; /* name of cluster */
- uint16_t percent_allowed; /* percentage of total resources
- * allowed for this cluster */
- } slurmdb_clus_res_rec_t;
- typedef struct {
- char *name;
- uint16_t direct;
- } slurmdb_coord_rec_t;
- typedef struct {
- List cluster_list; /* list of char * */
- uint32_t cpus_max; /* number of cpus high range */
- uint32_t cpus_min; /* number of cpus low range */
- uint16_t event_type; /* type of events (slurmdb_event_type_t),
- * default is all */
- List format_list; /* list of char * */
- char *node_list; /* node list string */
- time_t period_end; /* period end of events */
- time_t period_start; /* period start of events */
- List reason_list; /* list of char * */
- List reason_uid_list; /* list of char * */
- List state_list; /* list of char * */
- } slurmdb_event_cond_t;
- typedef struct {
- char *cluster; /* Name of associated cluster */
- char *cluster_nodes; /* node list in cluster during time
- * period (only set in a cluster event) */
- uint16_t event_type; /* type of event (slurmdb_event_type_t) */
- char *node_name; /* Name of node (only set in a node event) */
- time_t period_end; /* End of period */
- time_t period_start; /* Start of period */
- char *reason; /* reason node is in state during time
- period (only set in a node event) */
- uint32_t reason_uid; /* uid of that who set the reason */
- uint32_t state; /* State of node during time
- period (only set in a node event) */
- char *tres_str; /* TRES touched by this event */
- } slurmdb_event_rec_t;
- typedef struct {
- List cluster_list; /* list of char * */
- List federation_list; /* list of char * */
- List format_list; /* list of char * */
- uint16_t with_deleted;
- } slurmdb_federation_cond_t;
- typedef struct {
- char *name; /* Name of federation */
- uint32_t flags; /* flags to control scheduling on controller */
- List cluster_list; /* List of slurmdb_cluster_rec_t *'s */
- } slurmdb_federation_rec_t;
- /* slurmdb_job_cond_t is defined above alphabetical */
- typedef struct {
- char *account;
- char *admin_comment;
- char *alloc_gres;
- uint32_t alloc_nodes;
- uint32_t array_job_id; /* job_id of a job array or 0 if N/A */
- uint32_t array_max_tasks; /* How many tasks of the array can be
- running at one time.
- */
- uint32_t array_task_id; /* task_id of a job array of NO_VAL
- * if N/A */
- char *array_task_str; /* If pending these are the array
- tasks this record represents.
- */
- uint32_t associd;
- char *blockid;
- char *cluster;
- char *constraints;
- uint64_t db_index; /* index in the table */
- uint32_t derived_ec;
- char *derived_es; /* aka "comment" */
- uint32_t elapsed;
- time_t eligible;
- time_t end;
- uint32_t exitcode;
- uint32_t flags;
- void *first_step_ptr;
- uint32_t gid;
- uint32_t het_job_id;
- uint32_t het_job_offset;
- uint32_t jobid;
- char *jobname;
- uint32_t lft;
- char *mcs_label;
- char *nodes;
- char *partition;
- uint32_t priority;
- uint32_t qosid;
- uint32_t req_cpus;
- char *req_gres;
- uint64_t req_mem;
- uint32_t requid;
- uint32_t resvid;
- char *resv_name;
- uint32_t show_full;
- time_t start;
- uint32_t state;
- uint32_t state_reason_prev;
- slurmdb_stats_t stats;
- List steps; /* list of slurmdb_step_rec_t *'s */
- time_t submit;
- uint32_t suspended;
- char *system_comment;
- uint32_t sys_cpu_sec;
- uint32_t sys_cpu_usec;
- uint32_t timelimit;
- uint32_t tot_cpu_sec;
- uint32_t tot_cpu_usec;
- uint16_t track_steps;
- char *tres_alloc_str;
- char *tres_req_str;
- uint32_t uid;
- char *used_gres;
- char *user;
- uint32_t user_cpu_sec;
- uint32_t user_cpu_usec;
- char *wckey;
- uint32_t wckeyid;
- char *work_dir;
- } slurmdb_job_rec_t;
- typedef struct {
- uint32_t accrue_cnt; /* Count of how many jobs I have accuring prio
- * (DON'T PACK for state file) */
- List acct_limit_list; /* slurmdb_used_limits_t's (DON'T PACK
- * for state file) */
- List job_list; /* list of job pointers to submitted/running
- jobs (DON'T PACK) */
- bitstr_t *grp_node_bitmap; /* Bitmap of allocated nodes
- * (DON'T PACK) */
- uint16_t *grp_node_job_cnt; /* Count of jobs allocated on each node
- * (DON'T PACK) */
- uint32_t grp_used_jobs; /* count of active jobs (DON'T PACK
- * for state file) */
- uint32_t grp_used_submit_jobs; /* count of jobs pending or running
- * (DON'T PACK for state file) */
- uint64_t *grp_used_tres; /* count of tres in use in this qos
- * (DON'T PACK for state file) */
- uint64_t *grp_used_tres_run_secs; /* count of running tres secs
- * (DON'T PACK for state file) */
- double grp_used_wall; /* group count of time (minutes) used in
- * running jobs */
- double norm_priority;/* normalized priority (DON'T PACK for
- * state file) */
- uint32_t tres_cnt; /* size of the tres arrays,
- * (DON'T PACK for state file) */
- long double usage_raw; /* measure of resource usage */
- long double *usage_tres_raw; /* measure of each TRES usage */
- List user_limit_list; /* slurmdb_used_limits_t's (DON'T PACK
- * for state file) */
- } slurmdb_qos_usage_t;
- typedef struct {
- char *description;
- uint32_t id;
- uint32_t flags; /* flags for various things to enforce or
- override other limits */
- uint32_t grace_time; /* preemption grace time */
- uint32_t grp_jobs_accrue; /* max number of jobs this qos can
- * have accruing priority time
- */
- uint32_t grp_jobs; /* max number of jobs this qos can run
- * at one time */
- uint32_t grp_submit_jobs; /* max number of jobs this qos can submit at
- * one time */
- char *grp_tres; /* max number of tres ths qos can
- * allocate at one time */
- uint64_t *grp_tres_ctld; /* grp_tres broken out in an array
- * based off the ordering of the total
- * number of TRES in the system
- * (DON'T PACK) */
- char *grp_tres_mins; /* max number of tres minutes this
- * qos can run for */
- uint64_t *grp_tres_mins_ctld; /* grp_tres_mins broken out in an array
- * based off the ordering of the total
- * number of TRES in the system
- * (DON'T PACK) */
- char *grp_tres_run_mins; /* max number of tres minutes this
- * qos can have running at one time */
- uint64_t *grp_tres_run_mins_ctld; /* grp_tres_run_mins
- * broken out in an array
- * based off the ordering
- * of the total number of TRES in
- * the system
- * (DON'T PACK) */
- uint32_t grp_wall; /* total time in hours this qos can run for */
- uint32_t max_jobs_pa; /* max number of jobs an account can
- * run with this qos at one time */
- uint32_t max_jobs_pu; /* max number of jobs a user can
- * run with this qos at one time */
- uint32_t max_jobs_accrue_pa; /* max number of jobs an account can
- * have accruing priority time
- */
- uint32_t max_jobs_accrue_pu; /* max number of jobs a user can
- * have accruing priority time
- */
- uint32_t max_submit_jobs_pa; /* max number of jobs an account can
- submit with this qos at once */
- uint32_t max_submit_jobs_pu; /* max number of jobs a user can
- submit with this qos at once */
- char *max_tres_mins_pj; /* max number of tres seconds this
- * qos can have per job */
- uint64_t *max_tres_mins_pj_ctld; /* max_tres_mins broken out in an array
- * based off the ordering of the
- * total number of TRES in the system
- * (DON'T PACK) */
- char *max_tres_pa; /* max number of tres this
- * QOS can allocate per account */
- uint64_t *max_tres_pa_ctld; /* max_tres_pa broken out in an array
- * based off the ordering of the
- * total number of TRES in the system
- * (DON'T PACK) */
- char *max_tres_pj; /* max number of tres this
- * qos can allocate per job */
- uint64_t *max_tres_pj_ctld; /* max_tres_pj broken out in an array
- * based off the ordering of the
- * total number of TRES in the system
- * (DON'T PACK) */
- char *max_tres_pn; /* max number of tres this
- * qos can allocate per job */
- uint64_t *max_tres_pn_ctld; /* max_tres_pj broken out in an array
- * based off the ordering of the
- * total number of TRES in the system
- * (DON'T PACK) */
- char *max_tres_pu; /* max number of tres this
- * QOS can allocate per user */
- uint64_t *max_tres_pu_ctld; /* max_tres broken out in an array
- * based off the ordering of the
- * total number of TRES in the system
- * (DON'T PACK) */
- char *max_tres_run_mins_pa; /* max number of tres minutes this
- * qos can having running at one
- * time per account, currently
- * this doesn't do anything.
- */
- uint64_t *max_tres_run_mins_pa_ctld; /* max_tres_run_mins_pa
- * broken out in an array
- * based off the ordering
- * of the total number of TRES in
- * the system, currently
- * this doesn't do anything.
- * (DON'T PACK) */
- char *max_tres_run_mins_pu; /* max number of tres minutes this
- * qos can having running at one
- * time, currently this doesn't
- * do anything.
- */
- uint64_t *max_tres_run_mins_pu_ctld; /* max_tres_run_mins_pu
- * broken out in an array
- * based off the ordering
- * of the total number of TRES in
- * the system, currently
- * this doesn't do anything.
- * (DON'T PACK) */
- uint32_t max_wall_pj; /* longest time this
- * qos can run a job */
- uint32_t min_prio_thresh; /* Don't reserve resources for pending jobs
- * unless they have a priority equal to or
- * higher than this. */
- char *min_tres_pj; /* min number of tres a job can
- * allocate with this qos */
- uint64_t *min_tres_pj_ctld; /* min_tres_pj broken out in an array
- * based off the ordering of the
- * total number of TRES in the system
- * (DON'T PACK) */
- char *name;
- bitstr_t *preempt_bitstr; /* other qos' this qos can preempt */
- List preempt_list; /* list of char *'s only used to add or
- * change the other qos' this can preempt,
- * when doing a get use the preempt_bitstr */
- uint16_t preempt_mode; /* See PREEMPT_MODE_* in slurm/slurm.h */
- uint32_t preempt_exempt_time; /* Job run time before becoming
- eligible for preemption */
- uint32_t priority; /* ranged int needs to be a unint for
- * heterogeneous systems */
- slurmdb_qos_usage_t *usage; /* For internal use only, DON'T PACK */
- double usage_factor; /* factor to apply to usage in this qos */
- double usage_thres; /* percent of effective usage of an
- association when breached will deny
- pending and new jobs */
- time_t blocked_until; /* internal use only, DON'T PACK */
- } slurmdb_qos_rec_t;
- typedef struct {
- List description_list; /* list of char * */
- List id_list; /* list of char * */
- List format_list;/* list of char * */
- List name_list; /* list of char * */
- uint16_t preempt_mode; /* See PREEMPT_MODE_* in slurm/slurm.h */
- uint16_t with_deleted;
- } slurmdb_qos_cond_t;
- typedef struct {
- List cluster_list; /* cluster reservations are on list of
- * char * */
- uint64_t flags; /* flags for reservation. */
- List format_list;/* list of char * */
- List id_list; /* ids of reservations. list of char * */
- List name_list; /* name of reservations. list of char * */
- char *nodes; /* list of nodes in reservation */
- time_t time_end; /* end time of reservation */
- time_t time_start; /* start time of reservation */
- uint16_t with_usage; /* send usage for reservation */
- } slurmdb_reservation_cond_t;
- typedef struct {
- char *assocs; /* comma separated list of associations */
- char *cluster; /* cluster reservation is for */
- uint64_t flags; /* flags for reservation. */
- uint32_t id; /* id of reservation. */
- char *name; /* name of reservation */
- char *nodes; /* list of nodes in reservation */
- char *node_inx; /* node index of nodes in reservation */
- time_t time_end; /* end time of reservation */
- time_t time_start; /* start time of reservation */
- time_t time_start_prev; /* If start time was changed this is
- * the pervious start time. Needed
- * for accounting */
- char *tres_str;
- double unused_wall; /* amount of seconds this reservation wasn't used */
- List tres_list; /* list of slurmdb_tres_rec_t, only set when
- * job usage is requested.
- */
- } slurmdb_reservation_rec_t;
- typedef struct {
- uint32_t array_task_id; /* task_id of a job array or NO_VAL */
- uint32_t het_job_offset; /* het_job_offset or NO_VAL */
- uint32_t jobid;
- uint32_t stepid;
- } slurmdb_selected_step_t;
- typedef struct {
- uint32_t elapsed;
- time_t end;
- int32_t exitcode;
- slurmdb_job_rec_t *job_ptr;
- uint32_t nnodes;
- char *nodes;
- uint32_t ntasks;
- char *pid_str;
- uint32_t req_cpufreq_min;
- uint32_t req_cpufreq_max;
- uint32_t req_cpufreq_gov;
- uint32_t requid;
- time_t start;
- uint32_t state;
- slurmdb_stats_t stats;
- uint32_t stepid; /* job's step number */
- char *stepname;
- uint32_t suspended;
- uint32_t sys_cpu_sec;
- uint32_t sys_cpu_usec;
- uint32_t task_dist;
- uint32_t tot_cpu_sec;
- uint32_t tot_cpu_usec;
- char *tres_alloc_str;
- uint32_t user_cpu_sec;
- uint32_t user_cpu_usec;
- } slurmdb_step_rec_t;
- /* slurmdb_stats_t defined above alphabetical */
- typedef struct {
- List cluster_list; /* list of char * */
- List description_list; /* list of char * */
- uint32_t flags;
- List format_list;/* list of char * */
- List id_list; /* list of char * */
- List manager_list; /* list of char * */
- List name_list; /* list of char * */
- List percent_list; /* list of char * */
- List server_list; /* list of char * */
- List type_list; /* list of char * */
- uint16_t with_deleted;
- uint16_t with_clusters;
- } slurmdb_res_cond_t;
- typedef struct {
- List clus_res_list; /* list of slurmdb_clus_res_rec_t *'s */
- slurmdb_clus_res_rec_t *clus_res_rec; /* if only one cluster
- being represented */
- uint32_t count; /* count of resources managed on the server */
- char *description;
- uint32_t flags; /* resource attribute flags */
- uint32_t id;
- char *manager; /* resource manager name */
- char *name;
- uint16_t percent_used;
- char *server; /* resource server name */
- uint32_t type; /* resource type */
- } slurmdb_res_rec_t;
- typedef struct {
- List acct_list; /* list of char * */
- List action_list; /* list of char * */
- List actor_list; /* list of char * */
- List cluster_list; /* list of char * */
- List format_list;/* list of char * */
- List id_list; /* list of char * */
- List info_list; /* list of char * */
- List name_list; /* list of char * */
- time_t time_end;
- time_t time_start;
- List user_list; /* list of char * */
- uint16_t with_assoc_info;
- } slurmdb_txn_cond_t;
- typedef struct {
- char *accts;
- uint16_t action;
- char *actor_name;
- char *clusters;
- uint32_t id;
- char *set_info;
- time_t timestamp;
- char *users;
- char *where_query;
- } slurmdb_txn_rec_t;
- /* Right now this is used in the slurmdb_qos_rec_t structure. In the
- * user_limit_list and acct_limit_list. */
- typedef struct {
- uint32_t accrue_cnt; /* count of jobs accruing prio */
- char *acct; /* If limits for an account this is the accounts name */
- uint32_t jobs; /* count of active jobs */
- uint32_t submit_jobs; /* count of jobs pending or running */
- uint64_t *tres; /* array of TRES allocated */
- uint64_t *tres_run_mins; /* array of how many TRES mins are
- * allocated currently, currently this doesn't
- * do anything and isn't set up. */
- bitstr_t *node_bitmap; /* Bitmap of allocated nodes */
- uint16_t *node_job_cnt; /* Count of jobs allocated on each node */
- uint32_t uid; /* If limits for a user this is the users uid */
- } slurmdb_used_limits_t;
- typedef struct {
- uint16_t admin_level; /* really slurmdb_admin_level_t but for
- packing purposes needs to be uint16_t */
- slurmdb_assoc_cond_t *assoc_cond; /* use user_list here for
- names and acct_list for
- default accounts */
- List def_acct_list; /* list of char * (We can't really use
- * the assoc_cond->acct_list for this
- * because then it is impossible for us
- * to tell which accounts are defaults
- * and which ones aren't, especially when
- * dealing with other versions.)*/
- List def_wckey_list; /* list of char * */
- uint16_t with_assocs;
- uint16_t with_coords;
- uint16_t with_deleted;
- uint16_t with_wckeys;
- uint16_t without_defaults;
- } slurmdb_user_cond_t;
- struct slurmdb_user_rec {
- uint16_t admin_level; /* really slurmdb_admin_level_t but for
- packing purposes needs to be uint16_t */
- List assoc_list; /* list of slurmdb_association_rec_t *'s */
- slurmdb_bf_usage_t *bf_usage; /* data for backfill scheduler,
- * (DON'T PACK) */
- List coord_accts; /* list of slurmdb_coord_rec_t *'s */
- char *default_acct;
- char *default_wckey;
- char *name;
- char *old_name;
- uint32_t uid;
- List wckey_list; /* list of slurmdb_wckey_rec_t *'s */
- };
- typedef struct {
- List objects; /* depending on type */
- uint16_t type; /* really slurmdb_update_type_t but for
- * packing purposes needs to be a
- * uint16_t */
- } slurmdb_update_object_t;
- typedef struct {
- List cluster_list; /* list of char * */
- List format_list; /* list of char * */
- List id_list; /* list of char * */
- List name_list; /* list of char * */
- uint16_t only_defs; /* only give me the defaults */
- time_t usage_end;
- time_t usage_start;
- List user_list; /* list of char * */
- uint16_t with_usage; /* fill in usage */
- uint16_t with_deleted; /* return deleted associations */
- } slurmdb_wckey_cond_t;
- typedef struct {
- List accounting_list; /* list of slurmdb_accounting_rec_t *'s */
- char *cluster; /* cluster associated */
- uint32_t id; /* id identifing a combination of
- * user-wckey-cluster */
- uint16_t is_def; /* Is this the users default wckey */
- char *name; /* wckey name */
- uint32_t uid; /* user ID */
- char *user; /* user associated */
- } slurmdb_wckey_rec_t;
- typedef struct {
- char *name;
- char *print_name;
- char *spaces;
- uint16_t user; /* set to 1 if it is a user i.e. if name[0] is
- * '|' */
- } slurmdb_print_tree_t;
- typedef struct {
- slurmdb_assoc_rec_t *assoc;
- char *sort_name;
- List children;
- } slurmdb_hierarchical_rec_t;
- /************** report specific structures **************/
- typedef struct {
- char *acct;
- char *cluster;
- char *parent_acct;
- List tres_list; /* list of slurmdb_tres_rec_t *'s */
- char *user;
- } slurmdb_report_assoc_rec_t;
- typedef struct {
- char *acct;
- List acct_list; /* list of char *'s */
- List assoc_list; /* list of slurmdb_report_assoc_rec_t's */
- char *name;
- List tres_list; /* list of slurmdb_tres_rec_t *'s */
- uid_t uid;
- } slurmdb_report_user_rec_t;
- typedef struct {
- List accounting_list; /* list of slurmdb_accounting_rec_t *'s */
- List assoc_list; /* list of slurmdb_report_assoc_rec_t *'s */
- char *name;
- List tres_list; /* list of slurmdb_tres_rec_t *'s */
- List user_list; /* list of slurmdb_report_user_rec_t *'s */
- } slurmdb_report_cluster_rec_t;
- typedef struct {
- uint32_t count; /* count of jobs */
- List jobs; /* This should be a NULL destroy since we are just
- * putting a pointer to a slurmdb_job_rec_t here
- * not allocating any new memory */
- uint32_t min_size; /* smallest size of job in cpus here 0 if first */
- uint32_t max_size; /* largest size of job in cpus here INFINITE if
- * last */
- List tres_list; /* list of slurmdb_tres_rec_t *'s */
- } slurmdb_report_job_grouping_t;
- typedef struct {
- char *acct; /* account name */
- uint32_t count; /* total count of jobs taken up by this acct */
- List groups; /* containing slurmdb_report_job_grouping_t's*/
- uint32_t lft;
- uint32_t rgt;
- List tres_list; /* list of slurmdb_tres_rec_t *'s */
- } slurmdb_report_acct_grouping_t;
- typedef struct {
- List acct_list; /* containing slurmdb_report_acct_grouping_t's */
- char *cluster; /* cluster name */
- uint32_t count; /* total count of jobs taken up by this cluster */
- List tres_list; /* list of slurmdb_tres_rec_t *'s */
- } slurmdb_report_cluster_grouping_t;
- enum {
- DBD_ROLLUP_HOUR,
- DBD_ROLLUP_DAY,
- DBD_ROLLUP_MONTH,
- DBD_ROLLUP_COUNT
- };
- typedef struct {
- char *cluster_name; /* Cluster name */
- uint16_t count[DBD_ROLLUP_COUNT]; /* How many rollups have
- * happened in time period */
- time_t timestamp[DBD_ROLLUP_COUNT]; /* Timestamps of last rollup. */
- uint64_t time_last[DBD_ROLLUP_COUNT]; /* Last rollup time */
- uint64_t time_max[DBD_ROLLUP_COUNT]; /* What was the longest time
- * for each rollup */
- uint64_t time_total[DBD_ROLLUP_COUNT]; /* Time it took to do each
- * rollup */
- } slurmdb_rollup_stats_t;
- typedef struct {
- uint32_t cnt; /* count of object processed */
- uint32_t id; /* ID of object */
- uint64_t time; /* total usecs this object */
- uint64_t time_ave; /* ave usecs this object (DON'T PACK) */
- } slurmdb_rpc_obj_t;
- typedef struct {
- slurmdb_rollup_stats_t *dbd_rollup_stats;
- List rollup_stats; /* List of Clusters rollup stats */
- List rpc_list; /* list of RPCs sent to the dbd. */
- time_t time_start; /* When we started collecting data */
- List user_list; /* list of users issuing RPCs */
- } slurmdb_stats_rec_t;
- /* global variable for cross cluster communication */
- extern slurmdb_cluster_rec_t *working_cluster_rec;
- /************** account functions **************/
- /*
- * add accounts to accounting system
- * IN: account_list List of slurmdb_account_rec_t *
- * RET: SLURM_SUCCESS on success SLURM_ERROR else
- */
- extern int slurmdb_accounts_add(void *db_conn, List acct_list);
- /*
- * get info from the storage
- * IN: slurmdb_account_cond_t *
- * IN: params void *
- * returns List of slurmdb_account_rec_t *
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_accounts_get(void *db_conn,
- slurmdb_account_cond_t *acct_cond);
- /*
- * modify existing accounts in the accounting system
- * IN: slurmdb_acct_cond_t *acct_cond
- * IN: slurmdb_account_rec_t *acct
- * RET: List containing (char *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_accounts_modify(void *db_conn,
- slurmdb_account_cond_t *acct_cond,
- slurmdb_account_rec_t *acct);
- /*
- * remove accounts from accounting system
- * IN: slurmdb_account_cond_t *acct_cond
- * RET: List containing (char *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_accounts_remove(void *db_conn,
- slurmdb_account_cond_t *acct_cond);
- /************** archive functions **************/
- /*
- * expire old info from the storage
- */
- extern int slurmdb_archive(void *db_conn, slurmdb_archive_cond_t *arch_cond);
- /*
- * expire old info from the storage
- */
- extern int slurmdb_archive_load(void *db_conn,
- slurmdb_archive_rec_t *arch_rec);
- /************** association functions **************/
- /*
- * add associations to accounting system
- * IN: assoc_list List of slurmdb_assoc_rec_t *
- * RET: SLURM_SUCCESS on success SLURM_ERROR else
- */
- extern int slurmdb_associations_add(void *db_conn, List assoc_list);
- /*
- * get info from the storage
- * IN: slurmdb_assoc_cond_t *
- * RET: List of slurmdb_assoc_rec_t *
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_associations_get(void *db_conn,
- slurmdb_assoc_cond_t *assoc_cond);
- /*
- * modify existing associations in the accounting system
- * IN: slurmdb_assoc_cond_t *assoc_cond
- * IN: slurmdb_assoc_rec_t *assoc
- * RET: List containing (char *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_associations_modify(void *db_conn,
- slurmdb_assoc_cond_t *assoc_cond,
- slurmdb_assoc_rec_t *assoc);
- /*
- * remove associations from accounting system
- * IN: slurmdb_assoc_cond_t *assoc_cond
- * RET: List containing (char *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_associations_remove(void *db_conn,
- slurmdb_assoc_cond_t *assoc_cond);
- /************** cluster functions **************/
- /*
- * add clusters to accounting system
- * IN: cluster_list List of slurmdb_cluster_rec_t *
- * RET: SLURM_SUCCESS on success SLURM_ERROR else
- */
- extern int slurmdb_clusters_add(void *db_conn, List cluster_list);
- /*
- * get info from the storage
- * IN: slurmdb_cluster_cond_t *
- * IN: params void *
- * returns List of slurmdb_cluster_rec_t *
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_clusters_get(void *db_conn,
- slurmdb_cluster_cond_t *cluster_cond);
- /*
- * modify existing clusters in the accounting system
- * IN: slurmdb_cluster_cond_t *cluster_cond
- * IN: slurmdb_cluster_rec_t *cluster
- * RET: List containing (char *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_clusters_modify(void *db_conn,
- slurmdb_cluster_cond_t *cluster_cond,
- slurmdb_cluster_rec_t *cluster);
- /*
- * remove clusters from accounting system
- * IN: slurmdb_cluster_cond_t *cluster_cond
- * RET: List containing (char *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_clusters_remove(void *db_conn,
- slurmdb_cluster_cond_t *cluster_cond);
- /************** cluster report functions **************/
- /* report for clusters of account per user
- * IN: slurmdb_assoc_cond_t *assoc_cond
- * RET: List containing (slurmdb_report_cluster_rec_t *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_report_cluster_account_by_user(void *db_conn,
- slurmdb_assoc_cond_t *assoc_cond);
- /* report for clusters of users per account
- * IN: slurmdb_assoc_cond_t *assoc_cond
- * RET: List containing (slurmdb_report_cluster_rec_t *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_report_cluster_user_by_account(void *db_conn,
- slurmdb_assoc_cond_t *assoc_cond);
- /* report for clusters of wckey per user
- * IN: slurmdb_wckey_cond_t *wckey_cond
- * RET: List containing (slurmdb_report_cluster_rec_t *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_report_cluster_wckey_by_user(void *db_conn,
- slurmdb_wckey_cond_t *wckey_cond);
- /* report for clusters of users per wckey
- * IN: slurmdb_wckey_cond_t *wckey_cond
- * RET: List containing (slurmdb_report_cluster_rec_t *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_report_cluster_user_by_wckey(void *db_conn,
- slurmdb_wckey_cond_t *wckey_cond);
- extern List slurmdb_report_job_sizes_grouped_by_account(
- void *db_conn,
- slurmdb_job_cond_t *job_cond,
- List grouping_list,
- bool flat_view,
- bool acct_as_parent);
- extern List slurmdb_report_job_sizes_grouped_by_wckey(void *db_conn,
- slurmdb_job_cond_t *job_cond,
- List grouping_list);
- extern List slurmdb_report_job_sizes_grouped_by_account_then_wckey(
- void *db_conn,
- slurmdb_job_cond_t *job_cond,
- List grouping_list,
- bool flat_view,
- bool acct_as_parent);
- /* report on users with top usage
- * IN: slurmdb_user_cond_t *user_cond
- * IN: group_accounts - Whether or not to group all accounts together
- * for each user. If 0 a separate entry for each
- * user and account reference is displayed.
- * RET: List containing (slurmdb_report_cluster_rec_t *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_report_user_top_usage(void *db_conn,
- slurmdb_user_cond_t *user_cond,
- bool group_accounts);
- /************** connection functions **************/
- /*
- * get a new connection to the slurmdb
- * RET: pointer used to access db
- */
- extern void *slurmdb_connection_get();
- /*
- * get a new connection to the slurmdb
- * OUT: persist_conn_flags - Flags returned from connection if any see
- * slurm_persist_conn.h.
- * RET: pointer used to access db
- */
- extern void *slurmdb_connection_get2(uint16_t *persist_conn_flags);
- /*
- * release connection to the storage unit
- * IN/OUT: void ** pointer returned from
- * slurmdb_connection_get() which will be freed.
- * RET: SLURM_SUCCESS on success SLURM_ERROR else
- */
- extern int slurmdb_connection_close(void **db_conn);
- /*
- * commit or rollback changes made without closing connection
- * IN: void * pointer returned from slurmdb_connection_get()
- * IN: bool - true will commit changes false will rollback
- * RET: SLURM_SUCCESS on success SLURM_ERROR else
- */
- extern int slurmdb_connection_commit(void *db_conn, bool commit);
- /************** coordinator functions **************/
- /*
- * add users as account coordinators
- * IN: acct_list list of char *'s of names of accounts
- * IN: slurmdb_user_cond_t *user_cond
- * RET: SLURM_SUCCESS on success SLURM_ERROR else
- */
- extern int slurmdb_coord_add(void *db_conn,
- List acct_list,
- slurmdb_user_cond_t *user_cond);
- /*
- * remove users from being a coordinator of an account
- * IN: acct_list list of char *'s of names of accounts
- * IN: slurmdb_user_cond_t *user_cond
- * RET: List containing (char *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_coord_remove(void *db_conn, List acct_list,
- slurmdb_user_cond_t *user_cond);
- /*************** Federation functions **************/
- /*
- * add federations to accounting system
- * IN: list List of slurmdb_federation_rec_t *
- * RET: SLURM_SUCCESS on success SLURM_ERROR else
- */
- extern int slurmdb_federations_add(void *db_conn, List federation_list);
- /*
- * modify existing federations in the accounting system
- * IN: slurmdb_federation_cond_t *fed_cond
- * IN: slurmdb_federation_rec_t *fed
- * RET: List containing (char *'s) else NULL on error
- */
- extern List slurmdb_federations_modify(void *db_conn,
- slurmdb_federation_cond_t *fed_cond,
- slurmdb_federation_rec_t *fed);
- /*
- * remove federations from accounting system
- * IN: slurmdb_federation_cond_t *fed_cond
- * RET: List containing (char *'s) else NULL on error
- */
- extern List slurmdb_federations_remove(void *db_conn,
- slurmdb_federation_cond_t *fed_cond);
- /*
- * get info from the storage
- * IN: slurmdb_federation_cond_t *
- * RET: List of slurmdb_federation_rec_t *
- * note List needs to be freed when called
- */
- extern List slurmdb_federations_get(void *db_conn,
- slurmdb_federation_cond_t *fed_cond);
- /*************** Job functions **************/
- /*
- * modify existing job in the accounting system
- * IN: slurmdb_job_cond_t *job_cond
- * IN: slurmdb_job_rec_t *job
- * RET: List containing (char *'s) else NULL on error
- */
- extern List slurmdb_job_modify(void *db_conn,
- slurmdb_job_cond_t *job_cond,
- slurmdb_job_rec_t *job);
- /*
- * get info from the storage
- * returns List of slurmdb_job_rec_t *
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_jobs_get(void *db_conn, slurmdb_job_cond_t *job_cond);
- /*
- * Fix runaway jobs
- * IN: jobs, a list of all the runaway jobs
- * RET: SLURM_SUCCESS on success SLURM_ERROR else
- */
- extern int slurmdb_jobs_fix_runaway(void *db_conn, List jobs);
- /* initialization of job completion logging */
- extern int slurmdb_jobcomp_init(char *jobcomp_loc);
- /* terminate pthreads and free, general clean-up for termination */
- extern int slurmdb_jobcomp_fini(void);
- /*
- * get info from the storage
- * returns List of jobcomp_job_rec_t *
- * note List needs to be freed when called
- */
- extern List slurmdb_jobcomp_jobs_get(slurmdb_job_cond_t *job_cond);
- /************** extra get functions **************/
- /*
- * reconfigure the slurmdbd
- */
- extern int slurmdb_reconfig(void *db_conn);
- /*
- * shutdown the slurmdbd
- */
- extern int slurmdb_shutdown(void *db_conn);
- /*
- * clear the slurmdbd statistics
- */
- extern int slurmdb_clear_stats(void *db_conn);
- /*
- * get the slurmdbd statistics
- * Call slurmdb_destroy_stats_rec() to free stats_pptr
- */
- extern int slurmdb_get_stats(void *db_conn, slurmdb_stats_rec_t **stats_pptr);
- /*
- * get info from the storage
- * RET: List of config_key_pair_t *
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_config_get(void *db_conn);
- /*
- * get info from the storage
- * IN: slurmdb_event_cond_t *
- * RET: List of slurmdb_event_rec_t *
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_events_get(void *db_conn,
- slurmdb_event_cond_t *event_cond);
- /*
- * get info from the storage
- * IN: slurmdb_assoc_cond_t *
- * RET: List of slurmdb_assoc_rec_t *
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_problems_get(void *db_conn,
- slurmdb_assoc_cond_t *assoc_cond);
- /*
- * get info from the storage
- * IN: slurmdb_reservation_cond_t *
- * RET: List of slurmdb_reservation_rec_t *
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_reservations_get(void *db_conn,
- slurmdb_reservation_cond_t *resv_cond);
- /*
- * get info from the storage
- * IN: slurmdb_txn_cond_t *
- * RET: List of slurmdb_txn_rec_t *
- * note List needs to be freed with slurm_list_destroy() when called
- */
- 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 - comma 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);
- /*
- * get the first cluster that will run a job
- * IN: req - description of resource allocation request
- * IN: cluster_names - comma separated string of cluster names
- * OUT: cluster_rec - record of selected cluster or NULL if none found or
- * cluster_names is NULL
- * RET: SLURM_SUCCESS on success SLURM_ERROR else
- *
- * Note: Cluster_rec needs to be freed with slurmdb_destroy_cluster_rec() when
- * called
- * Note: The will_runs are not threaded. Currently it relies on the
- * working_cluster_rec to pack the job_desc's jobinfo. See previous commit for
- * an example of how to thread this.
- */
- extern int slurmdb_get_first_avail_cluster(job_desc_msg_t *req,
- char *cluster_names,
- slurmdb_cluster_rec_t **cluster_rec);
- /*
- * get the first cluster that will run a heterogeneous job
- * IN: req - description of resource allocation request
- * IN: cluster_names - comma separated string of cluster names
- * OUT: cluster_rec - record of selected cluster or NULL if none found or
- * cluster_names is NULL
- * RET: SLURM_SUCCESS on success SLURM_ERROR else
- *
- * Note: Cluster_rec needs to be freed with slurmdb_destroy_cluster_rec() when
- * called
- * Note: The will_runs are not threaded. Currently it relies on the
- * working_cluster_rec to pack the job_desc's jobinfo. See previous commit for
- * an example of how to thread this.
- */
- extern int slurmdb_get_first_het_job_cluster(List job_req_list,
- char *cluster_names, slurmdb_cluster_rec_t **cluster_rec);
- /************** helper functions **************/
- extern void slurmdb_destroy_assoc_usage(void *object);
- extern void slurmdb_destroy_bf_usage(void *object);
- extern void slurmdb_destroy_bf_usage_members(void *object);
- extern void slurmdb_destroy_qos_usage(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_federation_rec(void *object);
- extern void slurmdb_destroy_accounting_rec(void *object);
- extern void slurmdb_free_assoc_mgr_state_msg(void *object);
- extern void slurmdb_free_assoc_rec_members(slurmdb_assoc_rec_t *assoc);
- extern void slurmdb_destroy_assoc_rec(void *object);
- extern void slurmdb_destroy_event_rec(void *object);
- extern void slurmdb_destroy_job_rec(void *object);
- extern void slurmdb_free_qos_rec_members(slurmdb_qos_rec_t *qos);
- 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_tres_rec_noalloc(void *object);
- extern void slurmdb_destroy_tres_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_federation_cond(void *object);
- extern void slurmdb_destroy_tres_cond(void *object);
- extern void slurmdb_destroy_assoc_cond(void *object);
- extern void slurmdb_destroy_event_cond(void *object);
- extern void slurmdb_destroy_job_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_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_destroy_rpc_obj(void *object);
- extern void slurmdb_destroy_rollup_stats(void *object);
- extern void slurmdb_free_stats_rec_members(void *object);
- extern void slurmdb_destroy_stats_rec(void *object);
- extern void slurmdb_free_slurmdb_stats_members(slurmdb_stats_t *stats);
- extern void slurmdb_destroy_slurmdb_stats(slurmdb_stats_t *stats);
- extern void slurmdb_init_assoc_rec(slurmdb_assoc_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_federation_rec(slurmdb_federation_rec_t *federation,
- bool free_it);
- extern void slurmdb_init_qos_rec(slurmdb_qos_rec_t *qos,
- bool free_it,
- uint32_t init_val);
- 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_tres_cond(slurmdb_tres_cond_t *tres,
- bool free_it);
- extern void slurmdb_init_cluster_cond(slurmdb_cluster_cond_t *cluster,
- bool free_it);
- extern void slurmdb_init_federation_cond(slurmdb_federation_cond_t *federation,
- 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.
- */
- extern List slurmdb_get_hierarchical_sorted_assoc_list(
- List assoc_list, bool use_lft);
- extern List slurmdb_get_acct_hierarchical_rec_list(List assoc_list);
- /* IN/OUT: tree_list a list of slurmdb_print_tree_t's */
- extern char *slurmdb_tree_name_get(char *name, char *parent, List tree_list);
- /************** job report functions **************/
- /************** resource functions **************/
- /*
- * add resource's to accounting system
- * IN: res_list List of char *
- * RET: SLURM_SUCCESS on success SLURM_ERROR else
- */
- extern int slurmdb_res_add(void *db_conn, List res_list);
- /*
- * get info from the storage
- * IN: slurmdb_res_cond_t *
- * RET: List of slurmdb_res_rec_t *
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_res_get(void *db_conn, slurmdb_res_cond_t *res_cond);
- /*
- * modify existing resource in the accounting system
- * IN: slurmdb_res_cond_t *res_cond
- * IN: slurmdb_res_rec_t *res
- * RET: List containing (char *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_res_modify(void *db_conn,
- slurmdb_res_cond_t *res_cond,
- slurmdb_res_rec_t *res);
- /*
- * remove resource from accounting system
- * IN: slurmdb_res_cond_t *res
- * RET: List containing (char *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_res_remove(void *db_conn, slurmdb_res_cond_t *res_cond);
- /************** qos functions **************/
- /*
- * add qos's to accounting system
- * IN: qos_list List of char *
- * RET: SLURM_SUCCESS on success SLURM_ERROR else
- */
- extern int slurmdb_qos_add(void *db_conn, List qos_list);
- /*
- * get info from the storage
- * IN: slurmdb_qos_cond_t *
- * RET: List of slurmdb_qos_rec_t *
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_qos_get(void *db_conn, slurmdb_qos_cond_t *qos_cond);
- /*
- * modify existing qos in the accounting system
- * IN: slurmdb_qos_cond_t *qos_cond
- * IN: slurmdb_qos_rec_t *qos
- * RET: List containing (char *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_qos_modify(void *db_conn,
- slurmdb_qos_cond_t *qos_cond,
- slurmdb_qos_rec_t *qos);
- /*
- * remove qos from accounting system
- * IN: slurmdb_qos_cond_t *assoc_qos
- * RET: List containing (char *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_qos_remove(void *db_conn, slurmdb_qos_cond_t *qos_cond);
- /************** tres functions **************/
- /*
- * add tres's to accounting system
- * IN: tres_list List of char *
- * RET: SLURM_SUCCESS on success SLURM_ERROR else
- */
- extern int slurmdb_tres_add(void *db_conn, List tres_list);
- /*
- * get info from the storage
- * IN: slurmdb_tres_cond_t *
- * RET: List of slurmdb_tres_rec_t *
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_tres_get(void *db_conn, slurmdb_tres_cond_t *tres_cond);
- /************** usage functions **************/
- /*
- * get info from the storage
- * IN/OUT: in void * (slurmdb_assoc_rec_t *) or
- * (slurmdb_wckey_rec_t *) of (slurmdb_cluster_rec_t *) with
- * the id, and cluster set.
- * IN: type what type is 'in'
- * IN: start time stamp for records >=
- * IN: end time stamp for records <=
- * RET: SLURM_SUCCESS on success SLURM_ERROR else
- */
- extern int slurmdb_usage_get(void *db_conn,
- void *in,
- int type,
- time_t start,
- time_t end);
- /*
- * roll up data in the storage
- * IN: sent_start (option time to do a re-roll or start from this point)
- * IN: sent_end (option time to do a re-roll or end at this point)
- * IN: archive_data (if 0 old data is not archived in a monthly rollup)
- * OUT: rollup_stats_list_in (list containing stats about each clusters rollup)
- * RET: SLURM_SUCCESS on success SLURM_ERROR else
- */
- extern int slurmdb_usage_roll(void *db_conn,
- time_t sent_start,
- time_t sent_end,
- uint16_t archive_data,
- List *rollup_stats_list_in);
- /************** user functions **************/
- /*
- * add users to accounting system
- * IN: user_list List of slurmdb_user_rec_t *
- * RET: SLURM_SUCCESS on success SLURM_ERROR else
- */
- extern int slurmdb_users_add(void *db_conn, List user_list);
- /*
- * get info from the storage
- * IN: slurmdb_user_cond_t *
- * IN: params void *
- * returns List of slurmdb_user_rec_t *
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_users_get(void *db_conn, slurmdb_user_cond_t *user_cond);
- /*
- * modify existing users in the accounting system
- * IN: slurmdb_user_cond_t *user_cond
- * IN: slurmdb_user_rec_t *user
- * RET: List containing (char *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_users_modify(void *db_conn,
- slurmdb_user_cond_t *user_cond,
- slurmdb_user_rec_t *user);
- /*
- * remove users from accounting system
- * IN: slurmdb_user_cond_t *user_cond
- * RET: List containing (char *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_users_remove(void *db_conn,
- slurmdb_user_cond_t *user_cond);
- /************** user report functions **************/
- /************** wckey functions **************/
- /*
- * add wckey's to accounting system
- * IN: wckey_list List of slurmdb_wckey_rec_t *
- * RET: SLURM_SUCCESS on success SLURM_ERROR else
- */
- extern int slurmdb_wckeys_add(void *db_conn, List wckey_list);
- /*
- * get info from the storage
- * IN: slurmdb_wckey_cond_t *
- * RET: List of slurmdb_wckey_rec_t *
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_wckeys_get(void *db_conn,
- slurmdb_wckey_cond_t *wckey_cond);
- /*
- * modify existing wckey in the accounting system
- * IN: slurmdb_wckey_cond_t *wckey_cond
- * IN: slurmdb_wckey_rec_t *wckey
- * RET: List containing (char *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_wckeys_modify(void *db_conn,
- slurmdb_wckey_cond_t *wckey_cond,
- slurmdb_wckey_rec_t *wckey);
- /*
- * remove wckey from accounting system
- * IN: slurmdb_wckey_cond_t *assoc_wckey
- * RET: List containing (char *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
- extern List slurmdb_wckeys_remove(void *db_conn,
- slurmdb_wckey_cond_t *wckey_cond);
- #ifdef __cplusplus
- }
- #endif
- #endif /* !_SLURMDB_H */
|