Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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
languagec
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.

...