source: trunk/src/pbs_ifl.h @ 144

Last change on this file since 144 was 123, checked in by bas, 18 years ago

pbs_python:

  • pbs_rescquery() now works
  • Property svn:keywords set to Id
File size: 12.9 KB
Line 
1/*
2 * $Id: pbs_ifl.h 123 2006-09-13 09:19:14Z 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 123 2006-09-13 09:19:14Z 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
126/* additional queue attributes names */
127
128#define ATTR_aclgren    "acl_group_enable"
129#define ATTR_aclgroup   "acl_groups"
130#define ATTR_aclhten    "acl_host_enable"
131#define ATTR_aclhost    "acl_hosts"
132#define ATTR_acluren    "acl_user_enable"
133#define ATTR_acluser    "acl_users"
134#define ATTR_altrouter  "alt_router"
135#define ATTR_chkptmin   "checkpoint_min"
136#define ATTR_enable     "enabled"
137#define ATTR_fromroute  "from_route_only"
138#define ATTR_killdelay  "kill_delay"
139#define ATTR_maxgrprun  "max_group_run"
140#define ATTR_maxque     "max_queuable"
141#define ATTR_maxuserrun "max_user_run"
142#define ATTR_qtype      "queue_type"
143#define ATTR_rescassn   "resources_assigned"
144#define ATTR_rescdflt   "resources_default"
145#define ATTR_rescmax    "resources_max"
146#define ATTR_rescmin    "resources_min"
147#define ATTR_rndzretry  "rendezvous_retry"
148#define ATTR_routedest  "route_destinations"
149#define ATTR_routeheld  "route_held_jobs"
150#define ATTR_routewait  "route_waiting_jobs"
151#define ATTR_routeretry "route_retry_time"
152#define ATTR_routelife  "route_lifetime"
153#define ATTR_rsvexpdt   "reserved_expedite"
154#define ATTR_rsvsync    "reserved_sync"
155#define ATTR_start      "started"
156#define ATTR_count      "state_count"
157#define ATTR_number     "number_jobs"
158
159/* HvB
160 * Used by fifo_improv.patch
161*/
162#define ATTR_reqprop    "required_property"
163
164/* additional server attributes names */
165
166#define ATTR_aclroot    "acl_roots"
167#define ATTR_managers   "managers"
168#define ATTR_dfltque    "default_queue"
169#define ATTR_defnode    "default_node"
170#define ATTR_locsvrs    "location_servers"
171#define ATTR_logevents  "log_events"
172#define ATTR_logfile    "log_file"
173#define ATTR_mailfrom   "mail_from"
174#define ATTR_nodepack   "node_pack"
175#define ATTR_operators  "operators"
176#define ATTR_queryother "query_other_jobs"
177#define ATTR_resccost   "resources_cost"
178#define ATTR_rescavail  "resources_available"
179#define ATTR_schedit    "scheduler_iteration"
180#define ATTR_scheduling "scheduling"
181#define ATTR_status     "server_state"
182#define ATTR_syscost    "system_cost"
183
184/* HvB
185 * Used by TORQUE
186*/
187#define ATTR_pingrate   "node_ping_rate"
188#define ATTR_ndchkrate  "node_check_rate"
189
190/* HvB
191 * Used by fifo_improv.patch
192*/
193#define ATTR_procpack   "proc_pack"
194
195
196/* additional node "attributes" names */
197
198#define ATTR_NODE_state         "state"
199#define ATTR_NODE_np            "np"
200#define ATTR_NODE_properties    "properties"
201#define ATTR_NODE_ntype         "ntype"
202#define ATTR_NODE_jobs          "jobs"
203
204/* various attribute values */
205
206#define CHECKPOINT_UNSPECIFIED "u"
207#define NO_HOLD "n"
208#define NO_JOIN "n"
209#define NO_KEEP "n"
210#define MAIL_AT_ABORT "a"
211
212
213#define DELDELAY  "deldelay="   /* see qdel.c */
214#define USER_HOLD "u"
215#define OTHER_HOLD "o"
216#define SYSTEM_HOLD "s"
217
218/* node-attribute values (state,ntype) */
219
220#define ND_free                 "free"
221#define ND_offline              "offline"
222#define ND_down                 "down"
223#define ND_reserve              "reserve"
224#define ND_job_exclusive        "job-exclusive"
225#define ND_job_sharing          "job-sharing"
226#define ND_busy                 "busy"
227#define ND_state_unknown        "state-unknown"
228#define ND_timeshared           "time-shared"
229#define ND_cluster              "cluster"
230
231/*constant related to sum of string lengths for above strings*/
232#define MAX_ENCODE_BFR          100
233
234#define MGR_CMD_CREATE  0
235#define MGR_CMD_DELETE  1
236#define MGR_CMD_SET     2
237#define MGR_CMD_UNSET   3
238#define MGR_CMD_LIST    4
239#define MGR_CMD_PRINT   5
240#define MGR_CMD_ACTIVE  6
241
242#define MGR_OBJ_NONE    -1
243#define MGR_OBJ_SERVER  0
244#define MGR_OBJ_QUEUE   1
245#define MGR_OBJ_JOB     2
246#define MGR_OBJ_NODE    3
247
248/* Misc defines for various requests */
249
250#define MSG_OUT 1
251#define MSG_ERR 2
252
253#define SHUT_SIG        -1
254#define SHUT_IMMEDIATE  0
255#define SHUT_DELAY      1
256#define SHUT_QUICK      2
257
258#define SIG_RESUME      "resume"
259#define SIG_SUSPEND     "suspend"
260
261#define PBS_MAXHOSTNAME         64      /* max host name length */
262#ifndef MAXPATHLEN
263#define MAXPATHLEN              1024    /* max path name length */
264#endif
265#ifndef MAXNAMLEN
266#define MAXNAMLEN               255
267#endif
268
269#define PBS_MAXUSER             16      /* max user name length */
270#define PBS_MAXGRPN             16      /* max group name length */
271#define PBS_MAXQUEUENAME        15      /* max queue name length */
272#define PBS_MAXSERVERNAME       PBS_MAXHOSTNAME /* max server name length */
273#define PBS_MAXSEQNUM           6       /* max sequence number length */
274#define PBS_MAXPORTNUM          5       /* udp/tcp port numbers max=16 bits */
275#define PBS_MAXSVRJOBID         (PBS_MAXSEQNUM + PBS_MAXSERVERNAME + PBS_MAXPORTNUM + 2) /* server job id size */
276#define PBS_MAXCLTJOBID         (PBS_MAXSVRJOBID + PBS_MAXSERVERNAME + PBS_MAXPORTNUM + 2) /* client job id size */
277
278/* HvB
279 * TORQUE change used to be 256
280*/
281#define PBS_MAXDEST           1024      /* destination size -- increased from 256*/
282
283#define PBS_MAXROUTEDEST        (PBS_MAXQUEUENAME + PBS_MAXSERVERNAME + PBS_MAXPORTNUM + 2) /* destination size */
284#define PBS_USE_IFF             1       /* pbs_connect() to call pbs_iff */
285#define PBS_INTERACTIVE         1       /* Support of Interactive jobs */
286#define PBS_TERM_BUF_SZ         80      /* Interactive term buffer size */
287#define PBS_TERM_CCA            6       /* Interactive term cntl char array */
288
289
290/* someday the PBS_*_PORT definition will go away and only the  */
291/* PBS_*_SERVICE_NAME form will be used, maybe                  */
292
293#define PBS_BATCH_SERVICE_NAME          "pbs"
294#define PBS_BATCH_SERVICE_PORT          15001
295#define PBS_BATCH_SERVICE_NAME_DIS      "pbs_dis"       /* new DIS port   */
296#define PBS_BATCH_SERVICE_PORT_DIS      15001           /* new DIS port   */
297#define PBS_MOM_SERVICE_NAME            "pbs_mom"
298#define PBS_MOM_SERVICE_PORT            15002
299#define PBS_MANAGER_SERVICE_NAME        "pbs_resmon"
300#define PBS_MANAGER_SERVICE_PORT        15003
301#define PBS_SCHEDULER_SERVICE_NAME      "pbs_sched"
302#define PBS_SCHEDULER_SERVICE_PORT      15004
303
304enum batch_op { SET, UNSET, INCR, DECR,
305                EQ, NE, GE, GT, LE, LT, DFLT
306};
307
308/*
309** This structure is identical to attropl so they can be used
310** interchangably.  The op field is not used.
311*/
312struct attrl {
313        struct attrl *next;
314        char         *name;
315        char         *resource;
316        char         *value;
317        enum batch_op    op;    /* not used */
318};
319
320struct attropl {
321        struct attropl  *next;
322        char            *name;
323        char            *resource;
324        char            *value;
325        enum batch_op    op;
326};
327
328struct batch_status {
329        struct batch_status *next;
330        char                *name;
331        struct attrl        *attribs;
332        char                *text;
333};
334
335/* Resource Reservation Information */
336typedef int     resource_t;     /* resource reservation handle */
337
338#define RESOURCE_T_NULL         (resource_t)0
339#define RESOURCE_T_ALL          (resource_t)-1
340
341extern int
342pbs_errno;              /* error number */
343
344extern char *
345pbs_server;             /* server attempted to connect | connected to */
346                        /* see pbs_connect(3B)                        */
347
348extern char * avail(int connect, char *resc);
349
350extern int pbs_asyrunjob(int c, char *jobid, char *location, char *extend);
351
352extern int pbs_alterjob(int connect, char *job_id, struct attrl *attrib, 
353                        char *extend);
354
355extern int pbs_connect(char *server);
356
357extern int pbs_query_max_connections();
358
359extern char * pbs_default(void);
360
361extern int pbs_deljob(int connect, char *job_id, char *extend);
362
363extern int pbs_disconnect(int connect);
364
365extern char * pbs_geterrmsg(int connect);
366
367extern int pbs_holdjob(int connect, char *job_id, char *hold_type, 
368                       char *extend);
369
370extern char * pbs_locjob(int connect, char *job_id, char *extend);
371
372extern int pbs_manager(int connect, int command, int obj_type, char *obj_name,
373        struct attropl *attrib, char *extend);
374       
375extern int pbs_movejob(int connect, char *job_id, char *destination, 
376                       char *extend);
377       
378extern int pbs_msgjob(int connect, char *job_id, int file, char *message, 
379        char *extend);
380
381extern int pbs_orderjob (int connect, char *job1, char *job2, char *extend);
382
383extern int pbs_rescquery(int connect, char **rlist, int nresc, int *avail,
384        int *alloc, int *resv, int *down);
385
386extern int pbs_rescreserve(int connect, char **rlist, int nresc, resource_t *phandle);
387
388extern int pbs_rescrelease(int connect, resource_t rhandle);
389
390extern int pbs_rerunjob(int connect, char *job_id, char *extend);
391
392extern int pbs_rlsjob(int connect, char *job_id, char *hold_type, char *extend);
393
394extern int pbs_runjob(int connect, char *jobid, char *loc, char *extend);
395
396extern char **pbs_selectjob(int connect, struct attropl *select_list, char *extend);
397
398extern int pbs_sigjob(int connect, char *job_id, char *signal, char *extend);
399
400extern void pbs_statfree(struct batch_status *stat);
401
402// Function does not exitst Bas van der Vlies
403//
404// extern struct batch_status *pbs_statdest(int connect, char *id, char *extend);
405
406extern struct batch_status *pbs_statjob(int connect, char *id, struct attrl *attrib, char *extend);
407
408extern struct batch_status *pbs_selstat(int connect, struct attropl *select_list, char *extend);
409
410extern struct batch_status *pbs_statque(int connect, char *id, struct attrl *attrib, char *extend); 
411
412extern struct batch_status *pbs_statserver(int connect, struct attrl *attrib, char *extend);
413
414extern struct batch_status *pbs_statnode(int connect, char *id, struct attrl *attrib, char *extend);
415
416extern char *pbs_submit(int connect, struct attropl *attrib, char *script,
417        char *destination, char *extend);
418       
419extern int pbs_terminate(int connect, int manner, char *extend);
420
421extern int totpool(int connect, int update);
422
423extern int usepool(int connect, int update);
424
425#endif  /* _PBS_IFL_DEF */
426
427/*  end of pbs_ifl.h  */
Note: See TracBrowser for help on using the repository browser.