source: trunk/src/pbs_python.h @ 144

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

pbs_python:

  • Functions pbs_rescreserve and pbs_rescrelease now works
  • Property svn:keywords set to Id
File size: 10.6 KB
Line 
1/*
2 * @(#) $Id: pbs_python.h 125 2006-09-19 08:16:37Z bas $
3 */
4
5/*
6 *  Changed by: Bas van der Vlies <basv@sara.nl>.
7 *  Desc.     : removed the macro definitions so that SWIG can understand
8 *              the header file syntax
9 *              Made some other improvements so that the python shadow
10 *              classe are created with the right fields and automatic
11 *              conversion of C-lists and Python-lists.
12*/
13
14#ifndef _PBS_IFL_DEF
15#define _PBS_IFL_DEF
16
17/* Attribute Names used by user commands */
18
19#define ATTR_a "Execution_Time"
20#define ATTR_c "Checkpoint"
21#define ATTR_e "Error_Path"
22#define ATTR_g  "group_list"
23#define ATTR_h "Hold_Types"
24#define ATTR_j "Join_Path"
25#define ATTR_k "Keep_Files"
26#define ATTR_l "Resource_List"
27#define ATTR_m "Mail_Points"
28#define ATTR_o "Output_Path"
29#define ATTR_p "Priority"
30#define ATTR_q "destination"
31#define ATTR_r "Rerunable"
32#define ATTR_u "User_List"
33#define ATTR_v "Variable_List"
34#define ATTR_A "Account_Name"
35#define ATTR_M "Mail_Users"
36#define ATTR_N "Job_Name"
37#define ATTR_S "Shell_Path_List"
38#define ATTR_depend   "depend"
39#define ATTR_inter    "interactive"
40#define ATTR_stagein  "stagein"
41#define ATTR_stageout "stageout"
42
43/* additional job and general attribute names */
44
45#define ATTR_ctime      "ctime"
46#define ATTR_exechost   "exec_host"
47#define ATTR_mtime      "mtime"
48#define ATTR_qtime      "qtime"
49#define ATTR_session    "session_id"
50#define ATTR_euser      "euser"
51#define ATTR_egroup     "egroup"
52#define ATTR_hashname   "hashname"
53#define ATTR_hopcount   "hop_count"
54#define ATTR_security   "security"
55#define ATTR_sched_hint "sched_hint"
56#define ATTR_substate   "substate"
57#define ATTR_name       "Job_Name"
58#define ATTR_owner      "Job_Owner"
59#define ATTR_used       "resources_used"
60#define ATTR_state      "job_state"
61#define ATTR_queue      "queue"
62#define ATTR_server     "server"
63#define ATTR_maxrun     "max_running"
64#define ATTR_total      "total_jobs"
65#define ATTR_comment    "comment"
66#define ATTR_cookie     "cookie"
67#define ATTR_qrank      "queue_rank"
68#define ATTR_altid      "alt_id"
69#define ATTR_etime      "etime"
70
71/* additional queue attributes names */
72
73#define ATTR_aclgren    "acl_group_enable"
74#define ATTR_aclgroup   "acl_groups"
75#define ATTR_aclhten    "acl_host_enable"
76#define ATTR_aclhost    "acl_hosts"
77#define ATTR_acluren    "acl_user_enable"
78#define ATTR_acluser    "acl_users"
79#define ATTR_altrouter  "alt_router"
80#define ATTR_chkptmin   "checkpoint_min"
81#define ATTR_enable     "enabled"
82#define ATTR_fromroute  "from_route_only"
83#define ATTR_killdelay  "kill_delay"
84#define ATTR_maxgrprun  "max_group_run"
85#define ATTR_maxque     "max_queuable"
86#define ATTR_maxuserrun "max_user_run"
87#define ATTR_qtype      "queue_type"
88#define ATTR_rescassn   "resources_assigned"
89#define ATTR_rescdflt   "resources_default"
90#define ATTR_rescmax    "resources_max"
91#define ATTR_rescmin    "resources_min"
92#define ATTR_rndzretry  "rendezvous_retry"
93#define ATTR_routedest  "route_destinations"
94#define ATTR_routeheld  "route_held_jobs"
95#define ATTR_routewait  "route_waiting_jobs"
96#define ATTR_routeretry "route_retry_time"
97#define ATTR_routelife  "route_lifetime"
98#define ATTR_rsvexpdt   "reserved_expedite"
99#define ATTR_rsvsync    "reserved_sync"
100#define ATTR_start      "started"
101#define ATTR_count      "state_count"
102#define ATTR_number     "number_jobs"
103
104/* HvB
105 * Used by fifo_improv.patch
106*/
107#define ATTR_reqprop    "required_property"
108
109
110/* additional server attributes names */
111
112#define ATTR_aclroot    "acl_roots"
113#define ATTR_managers   "managers"
114#define ATTR_dfltque    "default_queue"
115#define ATTR_defnode    "default_node"
116#define ATTR_locsvrs    "location_servers"
117#define ATTR_logevents  "log_events"
118#define ATTR_logfile    "log_file"
119#define ATTR_mailfrom   "mail_from"
120#define ATTR_nodepack   "node_pack"
121#define ATTR_operators  "operators"
122#define ATTR_queryother "query_other_jobs"
123#define ATTR_resccost   "resources_cost"
124#define ATTR_rescavail  "resources_available"
125#define ATTR_schedit    "scheduler_iteration"
126#define ATTR_scheduling "scheduling"
127#define ATTR_status     "server_state"
128#define ATTR_syscost    "system_cost"
129
130/* HvB
131 * Used by TORQUE
132*/
133#define ATTR_pingrate   "node_ping_rate"
134#define ATTR_ndchkrate  "node_check_rate"
135
136/* HvB
137 * Used by fifo_improv.patch
138*/
139#define ATTR_procpack   "proc_pack"
140
141
142
143/* additional node "attributes" names */
144
145#define ATTR_NODE_state         "state"
146#define ATTR_NODE_np            "np"
147#define ATTR_NODE_properties    "properties"
148#define ATTR_NODE_ntype         "ntype"
149#define ATTR_NODE_jobs          "jobs"
150
151/* various attribute values */
152
153#define CHECKPOINT_UNSPECIFIED "u"
154#define NO_HOLD "n"
155#define NO_JOIN "n"
156#define NO_KEEP "n"
157#define MAIL_AT_ABORT "a"
158
159
160#define DELDELAY  "deldelay="   /* see qdel.c */
161#define USER_HOLD "u"
162#define OTHER_HOLD "o"
163#define SYSTEM_HOLD "s"
164
165/* node-attribute values (state,ntype) */
166
167#define ND_free                 "free"
168#define ND_offline              "offline"
169#define ND_down                 "down"
170#define ND_reserve              "reserve"
171#define ND_job_exclusive        "job-exclusive"
172#define ND_job_sharing          "job-sharing"
173#define ND_busy                 "busy"
174#define ND_state_unknown        "state-unknown"
175#define ND_timeshared           "time-shared"
176#define ND_cluster              "cluster"
177
178/*constant related to sum of string lengths for above strings*/
179#define MAX_ENCODE_BFR          100
180
181#define MGR_CMD_CREATE  0
182#define MGR_CMD_DELETE  1
183#define MGR_CMD_SET     2
184#define MGR_CMD_UNSET   3
185#define MGR_CMD_LIST    4
186#define MGR_CMD_PRINT   5
187#define MGR_CMD_ACTIVE  6
188
189#define MGR_OBJ_NONE    -1
190#define MGR_OBJ_SERVER  0
191#define MGR_OBJ_QUEUE   1
192#define MGR_OBJ_JOB     2
193#define MGR_OBJ_NODE    3
194
195/* Misc defines for various requests */
196
197#define MSG_OUT 1
198#define MSG_ERR 2
199
200#define SHUT_SIG        -1
201#define SHUT_IMMEDIATE  0
202#define SHUT_DELAY      1
203#define SHUT_QUICK      2
204
205#define SIG_RESUME      "resume"
206#define SIG_SUSPEND     "suspend"
207
208#define PBS_MAXHOSTNAME         64      /* max host name length */
209#ifndef MAXPATHLEN
210#define MAXPATHLEN              1024    /* max path name length */
211#endif
212#ifndef MAXNAMLEN
213#define MAXNAMLEN               255
214#endif
215
216#define PBS_MAXUSER             16      /* max user name length */
217#define PBS_MAXGRPN             16      /* max group name length */
218#define PBS_MAXQUEUENAME        15      /* max queue name length */
219#define PBS_MAXSERVERNAME       PBS_MAXHOSTNAME /* max server name length */
220#define PBS_MAXSEQNUM           6       /* max sequence number length */
221#define PBS_MAXPORTNUM          5       /* udp/tcp port numbers max=16 bits */
222#define PBS_MAXSVRJOBID         (PBS_MAXSEQNUM + PBS_MAXSERVERNAME + PBS_MAXPORTNUM + 2) /* server job id size */
223#define PBS_MAXCLTJOBID         (PBS_MAXSVRJOBID + PBS_MAXSERVERNAME + PBS_MAXPORTNUM + 2) /* client job id size */
224
225/* HvB
226 * TORQUE change used to be 256
227*/
228#define PBS_MAXDEST             1024    /* destination size -- increased from 256*/
229
230#define PBS_MAXROUTEDEST        (PBS_MAXQUEUENAME + PBS_MAXSERVERNAME + PBS_MAXPORTNUM + 2) /* destination size */
231#define PBS_USE_IFF             1       /* pbs_connect() to call pbs_iff */
232#define PBS_INTERACTIVE         1       /* Support of Interactive jobs */
233#define PBS_TERM_BUF_SZ         80      /* Interactive term buffer size */
234#define PBS_TERM_CCA            6       /* Interactive term cntl char array */
235
236
237/* someday the PBS_*_PORT definition will go away and only the  */
238/* PBS_*_SERVICE_NAME form will be used, maybe                  */
239
240#define PBS_BATCH_SERVICE_NAME          "pbs"
241#define PBS_BATCH_SERVICE_PORT          15001
242#define PBS_BATCH_SERVICE_NAME_DIS      "pbs_dis"       /* new DIS port   */
243#define PBS_BATCH_SERVICE_PORT_DIS      15001           /* new DIS port   */
244#define PBS_MOM_SERVICE_NAME            "pbs_mom"
245#define PBS_MOM_SERVICE_PORT            15002
246#define PBS_MANAGER_SERVICE_NAME        "pbs_resmon"
247#define PBS_MANAGER_SERVICE_PORT        15003
248#define PBS_SCHEDULER_SERVICE_NAME      "pbs_sched"
249#define PBS_SCHEDULER_SERVICE_PORT      15004
250
251enum batch_op { SET, UNSET, INCR, DECR,
252                EQ, NE, GE, GT, LE, LT, DFLT
253};
254
255/*
256** This structure is identical to attropl so they can be used
257** interchangably.  The op field is not used.
258** Bas van der Vlies <basv@sara.nl>:
259**   Remove the next field so Python does not wrap this field.
260*/
261struct attrl {
262        char         *name;
263        char         *resource;
264        char         *value;
265        enum batch_op    op;    /* not used */
266};
267
268struct attropl {
269        char            *name;
270        char            *resource;
271        char            *value;
272        enum batch_op    op;
273};
274
275struct batch_status {
276        char                *name;
277        struct attrl        *attribs;
278        char                *text;
279};
280
281#define RESOURCE_T_NULL         0
282#define RESOURCE_T_ALL          -1
283
284extern int
285pbs_errno;              /* error number */
286
287extern char *
288pbs_server;             /* server attempted to connect | connected to */
289                        /* see pbs_connect(3B)                        */
290
291extern char * avail(int connect, char *resc);
292
293extern int pbs_asyrunjob(int c, char *jobid, char *location, char *extend);
294
295extern int pbs_alterjob(int connect, char *job_id, 
296    struct attrl *IN, char *extend);
297
298extern int pbs_connect(char *server);
299
300extern int pbs_query_max_connections();
301
302extern char * pbs_default(void);
303
304extern int pbs_deljob(int connect, char *job_id, char *extend);
305
306extern int pbs_disconnect(int connect);
307
308/*  Replaced by a python function. No need to wrap it HvB
309extern char * pbs_geterrmsg(int connect);
310*/
311
312extern int pbs_holdjob(int connect, char *job_id, char *hold_type, 
313                       char *extend);
314
315extern char * pbs_locjob(int connect, char *job_id, char *extend);
316
317extern int pbs_manager(int connect, int command, int obj_type, char *obj_name,
318        struct attropl *IN, char *extend);
319       
320extern int pbs_movejob(int connect, char *job_id, char *destination, 
321                       char *extend);
322       
323extern int pbs_msgjob(int connect, char *job_id, int file, char *message, 
324        char *extend);
325
326extern int pbs_orderjob (int connect, char *job1, char *job2, char *extend);
327
328extern int pbs_rescquery(int connect, char **IN, int nresc, int *OUTPUT,
329        int *OUTPUT, int *OUTPUT, int *OUTPUT);
330
331extern int pbs_rescreserve(int connect, char **IN, int nresc, int *OUTPUT);
332
333extern int pbs_rescrelease(int connect, int resource_id);
334
335extern int pbs_rerunjob(int connect, char *job_id, char *extend);
336
337extern int pbs_rlsjob(int connect, char *job_id, char *hold_type, char *extend);
338
339extern int pbs_runjob(int connect, char *jobid, char *loc, char *extend);
340
341extern char **pbs_selectjob(int connect, struct attropl *IN, char *extend);
342
343extern int pbs_sigjob(int connect, char *job_id, char *signal, char *extend);
344
345extern void pbs_statfree(struct batch_status *IN);
346
347// Function does not exitst Bas van der Vlies
348//
349// extern struct batch_status *pbs_statdest(int connect, char *id, char *extend);
350
351extern struct batch_status *pbs_statjob(int connect, char *id, 
352    struct attrl *IN, char *extend);
353
354extern struct batch_status *pbs_selstat(int connect, 
355    struct attropl *IN, char *extend);
356
357extern struct batch_status *pbs_statque(int connect, char *id, 
358    struct attrl *IN, char *extend); 
359
360extern struct batch_status *pbs_statserver(int connect, struct attrl *IN, 
361    char *extend);
362
363extern struct batch_status *pbs_statnode(int connect, char *id, 
364    struct attrl *IN, char *extend);
365
366extern char *pbs_submit(int connect, struct attropl *IN, char *script,
367        char *destination, char *extend);
368       
369extern int pbs_terminate(int connect, int manner, char *extend);
370
371extern int totpool(int connect, int update);
372
373extern int usepool(int connect, int update);
374
375#endif  /* _PBS_IFL_DEF */
376
377/*  end of pbs_ifl.h  */
Note: See TracBrowser for help on using the repository browser.