source: trunk/src/pbs_ifl.h @ 161

Last change on this file since 161 was 161, checked in by bas, 16 years ago

src/PBSQuery.py:

  • _free function not needed any more. Destructors are now in SWIG code

new generated swig code:

  • src/pbs_ifl.h
  • src/pbs.py
  • src/pbs_python.h
  • src/pbs_wrap.c
  • Property svn:keywords set to Id
File size: 14.7 KB
Line 
1/*
2 * $Id: pbs_ifl.h 161 2008-09-24 13:38:53Z bas $
3 *
4*         Portable Batch System (PBS) Software License
5*
6* Copyright (c) 1999, MRJ Technology Solutions.
7* All rights reserved.
8*
9* Acknowledgment: The Portable Batch System Software was originally developed
10* as a joint project between the Numerical Aerospace Simulation (NAS) Systems
11* Division of NASA Ames Research Center and the National Energy Research
12* Supercomputer Center (NERSC) of Lawrence Livermore National Laboratory.
13*
14* Redistribution of the Portable Batch System Software and use in source
15* and binary forms, with or without modification, are permitted provided
16* that the following conditions are met:
17*
18* - Redistributions of source code must retain the above copyright and
19*   acknowledgment notices, this list of conditions and the following
20*   disclaimer.
21*
22* - Redistributions in binary form must reproduce the above copyright and
23*   acknowledgment notices, this list of conditions and the following
24*   disclaimer in the documentation and/or other materials provided with the
25*   distribution.
26*
27* - All advertising materials mentioning features or use of this software must
28*   display the following acknowledgment:
29*
30*   This product includes software developed by NASA Ames Research Center,
31*   Lawrence Livermore National Laboratory, and MRJ Technology Solutions.
32*
33*         DISCLAIMER OF WARRANTY
34*
35* THIS SOFTWARE IS PROVIDED BY MRJ TECHNOLOGY SOLUTIONS ("MRJ") "AS IS" WITHOUT
36* WARRANTY OF ANY KIND, AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
37* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
38* FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE EXPRESSLY DISCLAIMED.
39*
40* IN NO EVENT, UNLESS REQUIRED BY APPLICABLE LAW, SHALL MRJ, NASA, NOR
41* THE U.S. GOVERNMENT BE LIABLE FOR ANY DIRECT DAMAGES WHATSOEVER,
42* NOR ANY INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
43* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
44* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
45* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
47* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
48*
49* This license will be governed by the laws of the Commonwealth of Virginia,
50* without reference to its choice of law rules.
51*/
52
53/*
54 * @(#) $Id: pbs_ifl.h 161 2008-09-24 13:38:53Z bas $
55 */
56
57/*   
58 *
59 *  pbs_ifl.h   
60 *
61 */
62
63/*
64 *  Changed by: Bas van der Vlies <basv@sara.nl>.
65 *  Desc.     : removed the macro definitions so that SWIG can understand
66 *              the header file syntax
67*/
68
69#ifndef _PBS_IFL_DEF
70#define _PBS_IFL_DEF
71
72/* Attribute Names used by user commands */
73
74#define ATTR_a "Execution_Time"
75#define ATTR_c "Checkpoint"
76#define ATTR_e "Error_Path"
77#define ATTR_g "group_list"
78#define ATTR_h "Hold_Types"
79#define ATTR_j "Join_Path"
80#define ATTR_k "Keep_Files"
81#define ATTR_l "Resource_List"
82#define ATTR_m "Mail_Points"
83#define ATTR_o "Output_Path"
84#define ATTR_p "Priority"
85#define ATTR_q "destination"
86#define ATTR_r "Rerunable"
87#define ATTR_u "User_List"
88#define ATTR_v "Variable_List"
89#define ATTR_A "Account_Name"
90#define ATTR_M "Mail_Users"
91#define ATTR_N "Job_Name"
92#define ATTR_S "Shell_Path_List"
93#define ATTR_depend   "depend"
94#define ATTR_inter    "interactive"
95#define ATTR_stagein  "stagein"
96#define ATTR_stageout "stageout"
97
98/* additional job and general attribute names */
99
100#define ATTR_ctime      "ctime"
101#define ATTR_exechost   "exec_host"
102#define ATTR_mtime      "mtime"
103#define ATTR_qtime      "qtime"
104#define ATTR_session    "session_id"
105#define ATTR_euser      "euser"
106#define ATTR_egroup     "egroup"
107#define ATTR_hashname   "hashname"
108#define ATTR_hopcount   "hop_count"
109#define ATTR_security   "security"
110#define ATTR_sched_hint "sched_hint"
111#define ATTR_substate   "substate"
112#define ATTR_name       "Job_Name"
113#define ATTR_owner      "Job_Owner"
114#define ATTR_used       "resources_used"
115#define ATTR_state      "job_state"
116#define ATTR_queue      "queue"
117#define ATTR_server     "server"
118#define ATTR_maxrun     "max_running"
119#define ATTR_total      "total_jobs"
120#define ATTR_comment    "comment"
121#define ATTR_cookie     "cookie"
122#define ATTR_qrank      "queue_rank"
123#define ATTR_altid      "alt_id"
124#define ATTR_etime      "etime"
125#define ATTR_exitstat   "exit_status"
126#define ATTR_forwardx11 "forward_x11"
127#define ATTR_submit_args "submit_args"
128#define ATTR_umask    "umask"
129
130/* additional queue attributes names */
131
132#define ATTR_aclgren    "acl_group_enable"
133#define ATTR_aclgroup   "acl_groups"
134#define ATTR_aclhten    "acl_host_enable"
135#define ATTR_aclhost    "acl_hosts"
136#define ATTR_acluren    "acl_user_enable"
137#define ATTR_acluser    "acl_users"
138#define ATTR_altrouter  "alt_router"
139#define ATTR_chkptmin   "checkpoint_min"
140#define ATTR_enable     "enabled"
141#define ATTR_fromroute  "from_route_only"
142#define ATTR_killdelay  "kill_delay"
143#define ATTR_maxgrprun  "max_group_run"
144#define ATTR_maxque     "max_queuable"
145#define ATTR_maxuserrun "max_user_run"
146#define ATTR_qtype      "queue_type"
147#define ATTR_rescassn   "resources_assigned"
148#define ATTR_rescdflt   "resources_default"
149#define ATTR_rescmax    "resources_max"
150#define ATTR_rescmin    "resources_min"
151#define ATTR_rndzretry  "rendezvous_retry"
152#define ATTR_routedest  "route_destinations"
153#define ATTR_routeheld  "route_held_jobs"
154#define ATTR_routewait  "route_waiting_jobs"
155#define ATTR_routeretry "route_retry_time"
156#define ATTR_routelife  "route_lifetime"
157#define ATTR_rsvexpdt   "reserved_expedite"
158#define ATTR_rsvsync    "reserved_sync"
159#define ATTR_start      "started"
160#define ATTR_count      "state_count"
161#define ATTR_number     "number_jobs"
162#define ATTR_acllogic   "acl_logic_or"
163#define ATTR_aclgrpslpy "acl_group_sloppy"
164#define ATTR_keepcompleted "keep_completed"
165#define ATTR_disallowedtypes "disallowed_types"
166
167/* additional server attributes names */
168
169/* NOTE: steps for adding new attribute described in ??? */
170/*  - create #define ATTR_* in include/pbs_ifl.h
171    - insert SRV_ATR_* in include/server.h
172    - add SRV_ATR_* in include/qmgr_svr_public.h
173    - insert structure in server/svr_attr_def.c
174        NOTE:  structure must be in same relative position as SRV_ATR_*
175    - insert usage code in proper location
176*/
177
178#define ATTR_aclroot     "acl_roots"
179#define ATTR_managers    "managers"
180#define ATTR_dfltque     "default_queue"
181#define ATTR_defnode     "default_node"
182#define ATTR_locsvrs     "location_servers"
183#define ATTR_logevents   "log_events"
184#define ATTR_logfile     "log_file"
185#define ATTR_loglevel    "log_level"
186#define ATTR_mailfrom    "mail_from"
187#define ATTR_nodepack    "node_pack"
188#define ATTR_operators   "operators"
189#define ATTR_queryother  "query_other_jobs"
190#define ATTR_resccost    "resources_cost"
191#define ATTR_rescavail   "resources_available"
192#define ATTR_schedit     "scheduler_iteration"
193#define ATTR_scheduling  "scheduling"
194#define ATTR_status      "server_state"
195#define ATTR_syscost     "system_cost"
196#define ATTR_pingrate    "node_ping_rate"
197#define ATTR_ndchkrate   "node_check_rate"
198#define ATTR_tcptimeout  "tcp_timeout"
199#define ATTR_jobstatrate "job_stat_rate"
200#define ATTR_polljobs    "poll_jobs"
201#define ATTR_downonerror "down_on_error"
202#define ATTR_jobnanny    "job_nanny"
203#define ATTR_ownerpurge  "owner_purge"
204#define ATTR_qcqlimits   "queue_centric_limits"
205#define ATTR_momjobsync  "mom_job_sync"
206#define ATTR_maildomain  "mail_domain"
207#define ATTR_pbsversion  "pbs_version"
208#define ATTR_submithosts  "submit_hosts"
209#define ATTR_allownodesubmit  "allow_node_submit"
210#define ATTR_autonodenp  "auto_node_np"
211#define ATTR_servername  "server_name"
212#define ATTR_logfilemaxsize "log_file_max_size"
213#define ATTR_logfilerolldepth "log_file_roll_depth"
214#define ATTR_nextjobnum "next_job_number"
215
216/* additional node "attributes" names */
217
218#define ATTR_NODE_state         "state"
219#define ATTR_NODE_np            "np"
220#define ATTR_NODE_properties    "properties"
221#define ATTR_NODE_ntype         "ntype"
222#define ATTR_NODE_jobs          "jobs"
223#define ATTR_NODE_status        "status"
224#define ATTR_NODE_note          "note"
225
226/* various attribute values */
227
228#define CHECKPOINT_UNSPECIFIED "u"
229#define NO_HOLD "n"
230#define NO_JOIN "n"
231#define NO_KEEP "n"
232#define MAIL_AT_ABORT "a"
233
234
235#define DELDELAY  "deldelay="   /* see qdel.c */
236#define DELPURGE  "delpurge="   /* see qdel.c */
237#define EXECQUEONLY  "exec_queue_only"   /* see req_stat.c */
238
239#define USER_HOLD "u"
240#define OTHER_HOLD "o"
241#define SYSTEM_HOLD "s"
242
243/* node-attribute values (state,ntype) */
244
245#define ND_free                 "free"
246#define ND_offline              "offline"
247#define ND_down                 "down"
248#define ND_reserve              "reserve"
249#define ND_job_exclusive        "job-exclusive"
250#define ND_job_sharing          "job-sharing"
251#define ND_busy                 "busy"
252#define ND_state_unknown        "state-unknown"
253#define ND_timeshared           "time-shared"
254#define ND_cluster              "cluster"
255
256/* queue disallowed types */
257#define Q_DT_batch              "batch"
258#define Q_DT_interactive        "interactive"
259#define Q_DT_rerunable          "rerunable"
260#define Q_DT_nonrerunable       "nonrerunable"
261
262/*constant related to sum of string lengths for above strings*/
263#define MAX_ENCODE_BFR          100
264
265#define MGR_CMD_CREATE  0
266#define MGR_CMD_DELETE  1
267#define MGR_CMD_SET     2
268#define MGR_CMD_UNSET   3
269#define MGR_CMD_LIST    4
270#define MGR_CMD_PRINT   5
271#define MGR_CMD_ACTIVE  6
272
273#define MGR_OBJ_NONE    -1
274#define MGR_OBJ_SERVER  0
275#define MGR_OBJ_QUEUE   1
276#define MGR_OBJ_JOB     2
277#define MGR_OBJ_NODE    3
278
279/* Misc defines for various requests */
280
281#define MSG_OUT 1
282#define MSG_ERR 2
283
284#define SHUT_SIG        -1
285#define SHUT_IMMEDIATE  0
286#define SHUT_DELAY      1
287#define SHUT_QUICK      2
288
289#define SIG_RESUME      "resume"
290#define SIG_SUSPEND     "suspend"
291
292#define PBS_MAXHOSTNAME         64      /* max host name length */
293#ifndef MAXPATHLEN
294#define MAXPATHLEN              1024    /* max path name length */
295#endif
296#ifndef MAXNAMLEN
297#define MAXNAMLEN               255
298#endif
299#define MAX_NOTE                256     /* max node note length */
300#define MAX_NOTE_STR            "256"   /* max node note length as a string literal (this MUST match MAX_NOTE) */
301
302#define PBS_MAXUSER             16      /* max user name length */
303#define PBS_MAXGRPN             16      /* max group name length */
304#define PBS_MAXQUEUENAME        15      /* max queue name length */
305#define PBS_MAXSERVERNAME       PBS_MAXHOSTNAME /* max server name length */
306#define PBS_MAXSEQNUM           6       /* max sequence number length */
307#define PBS_MAXPORTNUM          5       /* udp/tcp port numbers max=16 bits */
308#define PBS_MAXSVRJOBID         (PBS_MAXSEQNUM + PBS_MAXSERVERNAME + PBS_MAXPORTNUM + 2) /* server job id size */
309#define PBS_MAXCLTJOBID         (PBS_MAXSVRJOBID + PBS_MAXSERVERNAME + PBS_MAXPORTNUM + 2) /* client job id size */
310#define PBS_MAXDEST           1024      /* destination size -- increased from 256*/
311#define PBS_MAXROUTEDEST        (PBS_MAXQUEUENAME + PBS_MAXSERVERNAME + PBS_MAXPORTNUM + 2) /* destination size */
312#define PBS_USE_IFF             1       /* pbs_connect() to call pbs_iff */
313#define PBS_INTERACTIVE         1       /* Support of Interactive jobs */
314#define PBS_TERM_BUF_SZ         80      /* Interactive term buffer size */
315#define PBS_TERM_CCA            6       /* Interactive term cntl char array */
316
317
318/* someday the PBS_*_PORT definition will go away and only the  */
319/* PBS_*_SERVICE_NAME form will be used, maybe                  */
320
321#define PBS_BATCH_SERVICE_NAME          "pbs"
322#define PBS_BATCH_SERVICE_PORT          15001
323#define PBS_BATCH_SERVICE_NAME_DIS      "pbs_dis"       /* new DIS port   */
324#define PBS_BATCH_SERVICE_PORT_DIS      15001           /* new DIS port   */
325#define PBS_MOM_SERVICE_NAME            "pbs_mom"
326#define PBS_MOM_SERVICE_PORT            15002
327#define PBS_MANAGER_SERVICE_NAME        "pbs_resmon"
328#define PBS_MANAGER_SERVICE_PORT        15003
329#define PBS_SCHEDULER_SERVICE_NAME      "pbs_sched"
330#define PBS_SCHEDULER_SERVICE_PORT      15004
331
332enum batch_op { SET, UNSET, INCR, DECR, EQ, NE, GE, GT, LE, LT, DFLT };
333
334/*
335** This structure is identical to attropl so they can be used
336** interchangably.  The op field is not used.
337*/
338struct attrl {
339        struct attrl *next;
340        char         *name;
341        char         *resource;
342        char         *value;
343        enum batch_op    op;    /* not used */
344};
345
346struct attropl {
347        struct attropl  *next;
348        char            *name;
349        char            *resource;
350        char            *value;
351        enum batch_op    op;
352};
353
354struct batch_status {
355        struct batch_status *next;
356        char                *name;
357        struct attrl        *attribs;
358        char                *text;
359};
360
361/* Resource Reservation Information */
362typedef int     resource_t;     /* resource reservation handle */
363
364#define RESOURCE_T_NULL         (resource_t)0
365#define RESOURCE_T_ALL          (resource_t)-1
366
367extern int
368pbs_errno;              /* error number */
369
370extern char *
371pbs_server;             /* server attempted to connect | connected to */
372                        /* see pbs_connect(3B)                        */
373
374extern char * avail(int connect, char *resc);
375
376extern int pbs_asyrunjob(int c, char *jobid, char *location, char *extend);
377
378extern int pbs_alterjob(int connect, char *job_id, struct attrl *attrib, 
379                        char *extend);
380
381extern int pbs_connect(char *server);
382
383extern int pbs_query_max_connections(void);
384
385extern char * pbs_default(void);
386
387extern int pbs_deljob(int connect, char *job_id, char *extend);
388
389extern int pbs_disconnect(int connect);
390
391extern char * pbs_geterrmsg(int connect);
392
393extern int pbs_holdjob(int connect, char *job_id, char *hold_type, 
394                       char *extend);
395
396extern char * pbs_locjob(int connect, char *job_id, char *extend);
397
398extern int pbs_manager(int connect, int command, int obj_type, char *obj_name,
399        struct attropl *attrib, char *extend);
400       
401extern int pbs_movejob(int connect, char *job_id, char *destination, 
402                       char *extend);
403       
404extern int pbs_msgjob(int connect, char *job_id, int file, char *message, 
405        char *extend);
406
407extern int pbs_orderjob (int connect, char *job1, char *job2, char *extend);
408
409extern int pbs_rescquery(int connect, char **rlist, int nresc, int *avail,
410        int *alloc, int *resv, int *down);
411
412extern int pbs_rescreserve(int connect, char **rlist, int nresc, resource_t *phandle);
413
414extern int pbs_rescrelease(int connect, resource_t rhandle);
415
416extern int pbs_rerunjob(int connect, char *job_id, char *extend);
417
418extern int pbs_rlsjob(int connect, char *job_id, char *hold_type, char *extend);
419
420extern int pbs_runjob(int connect, char *jobid, char *loc, char *extend);
421
422extern char **pbs_selectjob(int connect, struct attropl *select_list, char *extend);
423
424extern int pbs_sigjob(int connect, char *job_id, char *signal, char *extend);
425
426extern void pbs_statfree(struct batch_status *stat);
427
428// Function does not exitst Bas van der Vlies
429//
430// extern struct batch_status *pbs_statdest(int connect, char *id, char *extend);
431
432extern struct batch_status *pbs_statjob(int connect, char *id, struct attrl *attrib, char *extend);
433
434extern struct batch_status *pbs_selstat(int connect, struct attropl *select_list, char *extend);
435
436extern struct batch_status *pbs_statque(int connect, char *id, struct attrl *attrib, char *extend); 
437
438extern struct batch_status *pbs_statserver(int connect, struct attrl *attrib, char *extend);
439
440extern struct batch_status *pbs_statnode(int connect, char *id, struct attrl *attrib, char *extend);
441
442extern char *pbs_submit(int connect, struct attropl *attrib, char *script,
443        char *destination, char *extend);
444       
445extern int pbs_terminate(int connect, int manner, char *extend);
446
447extern int totpool(int connect, int update);
448
449extern int usepool(int connect, int update);
450
451#endif  /* _PBS_IFL_DEF */
452
453/*  end of pbs_ifl.h  */
Note: See TracBrowser for help on using the repository browser.