...
Code Block |
---|
struct pbs_db_connection { void *conn_db_handle; /* opaque database handle */ char *conn_host; /* host */ int conn_port; /* port */ int conn_timeout; /* connection timeout */ int conn_state; /* connected? */ int conn_db_state; /* db up? down? starting? */ time_t conn_connect_time; /* when was connection initiated */ int void *conn_trxdb_nesterr; /* incr/decropaque withdatabase eacherror beginstore */end trx */ int void *conn_trx_rollback;data; /* rollbackany other flagdb inspecific casedata of*/ nested trx */ int void *conn_trx_asyncextend; /* 1 - async, 0 - sync, one-shot reset */ void *conn_db_err; /* opaque database error store */ void *conn_data; /* any other db specific data */ /* any other db specific options */ } typedef struct pbs_db_connection pbs_db_conn_t; |
pbs_db_obj_info_t: Wrapper object structure. It contains a pointer to one of the several database structures. Most of the database manipulation/query functions take this structure as a parameter. Depending on the contained structure type, an appropriate internal database manipulation/query function is eventually called. This allows keeping the interface simpler and generic.
Code Block | ||
---|---|---|
| ||
struct pbs_db_obj_info { |
...
int pbs_db_obj_type; /* identifies the contained object type */ |
...
union { |
...
pbs_db_job_info_t *pbs_db_job; |
...
/* map database job structure to C */ pbs_db_jobscr_info_t *pbs_db_jobscr; |
...
/* map database job script to C */ pbs_db_ |
...
resv_info_t *pbs_db_ |
...
resv; /* map database resv structure to C */ pbs_db_ |
...
svr_info_t *pbs_db_ |
...
svr; /* map database server structure to C */ pbs_db_ |
...
que_info_t *pbs_db_ |
...
que; /* map database queue structure to C */ pbs_db_ |
...
node_info_t *pbs_db_ |
...
node; /* map database node structure to C */ pbs_db_ |
...
sched_ |
...
info_t *pbs_db_ |
...
sched; /* map database scheduler structure to C */ pbs_db_mominfo_time_t *pbs_db_mominfo_tm; /* map database mominfo_time structure to C */ } pbs_db_un; }; typedef struct pbs_db_obj_info pbs_db_obj_info_t; |
...
/* Structure used to map database job structure to C |
...
*/ struct pbs_db_job_info { |
...
char ji_jobid[PBS_MAXSVRJOBID + 1]; /* job identifier */ |
...
INTEGER ji_state; /* INTEGERernal copy of state */ |
...
INTEGER ji_substate; /* job sub-state */ |
...
INTEGER ji_svrflags; /* server flags */ |
...
INTEGER ji_ordering; /* special scheduling ordering */ |
...
INTEGER ji_priority; /* INTEGERernal priority */ |
...
BIGINT ji_stime; /* time job started execution */ |
...
BIGINT ji_endtBdry; /* estimate upper bound on end time */ |
...
char ji_queue[PBS_MAXQUEUENAME + 1]; /* name of current queue */ |
...
char ji_destin[PBS_MAXROUTEDEST + 1]; /* dest from qmove/route */ |
...
INTEGER ji_un_type; |
...
/* job's queue type */ INTEGER ji_momaddr; /* host addr of Server */ |
...
INTEGER ji_momport; /* port # */ |
...
INTEGER ji_exitstat; /* job exit status from MOM */ |
...
BIGINT ji_quetime; /* time entered queue */ |
...
BIGINT ji_rteretry; /* route retry time */ |
...
INTEGER ji_fromsock; /* socket job coming over */ |
...
BIGINT ji_fromaddr; /* host job coming from |
...
*/ char ji_4jid[8]; |
...
/* extended job save data */ char ji_4ash[8]; |
...
/* extended job save data */ INTEGER ji_credtype; |
...
/* credential type */ INTEGER ji_qrank; |
...
/* sort key for db query */ BIGINT ji_savetm; |
...
/* job save time */ BIGINT ji_creattm; |
...
/* job create time */ pbs_db_attr_list_t attr_list; /* list of attributes */ |
...
}; |
...
typedef struct pbs_db_job_info pbs_db_job_info_t; |
...
/* Structure used to map database resv structure to C |
...
*/ struct pbs_db_resv_info { |
...
char ri_resvid[PBS_MAXSVRJOBID + 1]; |
...
/* reservation identifier */ char ri_queue[PBS_MAXQUEUENAME + 1]; |
...
/* queue used by reservation */ INTEGER ri_state; |
...
/* internal copy of state */ INTEGER ri_substate; |
...
/* substate of resv state */ INTEGER ri_type; |
...
/* "reservation" or "reservation job"*/ BIGINT ri_stime; /* left window boundry */ BIGINT ri_etime; /* right window boundry */ BIGINT ri_duration; /* reservation duration */ INTEGER ri_tactive; /* time reservation became active */ INTEGER ri_svrflags; /* server flags */ INTEGER ri_fromsock; /* resv from sock */ BIGINT ri_fromaddr; /* resv from sock addr */ BIGINT ri_creattm; /* resv create time on db */ BIGINT ri_savetm; /* resv save time on db */ pbs_db_attr_list_t attr_list; /* list of attributes */ |
...
}; |
...
typedef struct pbs_db_resv_info pbs_db_resv_info_t; |
...
/* Structure used to map database server structure to C |
...
*/ struct pbs_db_svr_info { |
...
INTEGER sv_numjobs; |
...
/* number of job owned by server */ INTEGER sv_numque; |
...
/* nuber of queues managed */ BIGINT sv_jobidnumber; /* next number to use in new jobid */ BIGINT sv_creattm; /* time of server db create */ BIGINT sv_savetm; /* time of server db update */ pbs_db_attr_list_t attr_list; /* list of attributes */ |
...
}; |
...
typedef struct pbs_db_svr_info pbs_db_svr_info_t; |
...
/* Structure used to map database scheduler structure to C |
...
*/ struct pbs_db_sched_info { |
...
char sched_name[PBS_MAXSCHEDNAME+1]; |
...
/* sched name */ BIGINT sched_creattm; |
...
/* sched create time on db */ BIGINT sched_savetm; /* sched save time on db */ pbs_db_attr_list_t attr_list; /* list of attributes */ |
...
}; |
...
typedef struct pbs_db_sched_info pbs_db_sched_info_t; |
...
/* Structure used to map database queue structure to C |
...
*/ struct pbs_db_que_info { |
...
char qu_name[PBS_MAXQUEUENAME +1]; |
...
/* queue name */ INTEGER qu_type; /* queue type: exec, route */ BIGINT qu_ctime; /* time queue created */ BIGINT qu_mtime; /* time queue last modified */ pbs_db_attr_list_t attr_list; /* list of attributes */ |
...
}; |
...
typedef struct pbs_db_que_info pbs_db_que_info_t |
...
Structure used to map database node structure to C
...
; /* Structure used to map database node structure to C */ struct pbs_db_node_info { |
...
char nd_name[PBS_MAXSERVERNAME+1]; |
...
/* vnode's name */ INTEGER nd_index; |
...
/* global node index */ BIGINT mom_modtime; /* node config update time */ char nd_hostname[PBS_MAXSERVERNAME+1]; |
...
/* node hostname */ INTEGER nd_state; |
...
/* state of node */ INTEGER nd_ntype; |
...
/* node type */ char nd_pque[PBS_MAXSERVERNAME+1]; /* queue to which it belongs */ BIGINT nd_creattm; /* node create time */ BIGINT nd_svtime; /* node save time */ pbs_db_attr_list_t attr_list; /* list of attributes */ |
...
}; |
...
typedef struct pbs_db_node_info pbs_db_node_info_t |
...
; /* Structure used to map database mominfo_time structure to C |
...
*/ struct pbs_db_mominfo_time { |
...
BIGINT mit_time; |
...
/* time of the host to vnode map */ INTEGER mit_gen; |
...
/* generation of the host to vnode map */ }; typedef struct pbs_db_mominfo_time pbs_db_mominfo_time_t; |
...
/* Structure used to map database job script to C |
...
*/ struct pbs_db_jobscr_info { |
...
char ji_jobid[PBS_MAXSVRJOBID + 1]; /* job identifier */ |
...
TEXT script; /* job script */ }; typedef struct pbs_db_jobscr_info pbs_db_jobscr_info_t; |
pbs_db_query_options_t: Structure used to pass database query options to database functions. Flags field can be used to pass any flags to a query function. Timestamp field can be used to pass a timestamp, to return rows that have a modification timestamp newer (more recent) than the timestamp passed. (Basically to return rows that have been modified since a point of time)
Structure used to pass database query options to database functions
Code Block |
---|
struct pbs_db_query_options { |
...
int flags; /* Flags field can be used to pass any flags to a query function. */ |
...
time_t timestamp; /* Timestamp field can be used to pass a timestamp, to return rows that have a modification timestamp newer (more recent) than the timestamp passed. (Basically to return rows that have been modified since a point of time) */ |
...
}; |
...
typedef struct pbs_db_query_options pbs_db_query_options_t; |
query_cb_t: Function pointer for call back function to process the data returned by the database.
...
Structure used to map database attr structure to C
Code Block |
---|
struct pbs_db_attr_info { |
...
char attr_name[PBS_MAXATTRNAME+1]; |
...
/* attribute name */ char attr_resc[PBS_MAXATTRRESC+1]; |
...
/* resource name */ TEXT attr_value; /* attribute value */ INTEGER attr_flags; /* attribute flags */ }; typedef struct pbs_db_attr_info pbs_db_attr_info_t; |
...
struct pbs_db_attr_list { |
...
int attr_count; |
...
/* attribute count */ pbs_db_attr_info_t *attributes; |
...
/* ptr to attr_info structure */ }; |
...
typedef struct pbs_db_attr_list pbs_db_attr_list_t; |
1.2. APIs from libdb.so
1.2.1. PBS Objects: Libdb APIs can work with below mentioned PBS objects.
...