Jira ID |
| ||||||||||||||||||||||||||||||||||||
Forum Discussion | |||||||||||||||||||||||||||||||||||||
Requirements and Usecases | Click here | ||||||||||||||||||||||||||||||||||||
Design Document Links |
Interface 1: server hook event - “resv_confirm”
Visibility: Public
Change Control: Experimental
Details:
The hook created for this event will be invoked when there is a request for reservation confirmation which occurs after submitting a reservation, a confirmed reservation is altered or when a running reservation is altered.
This hook is created by pbsadmin and it will have read privileges to the server and the reservation objects.
The hook will run in foreground with the PBS server.
- The reservation object with in the hook can be created by an interface pbs.event().resv exposed by the PBS event module.
- The server object attributes can be accessed by the interface pbs.server() exposed by the PBS module.
- The reservation queue object attributes can be accessed by the interface pbs.event().resv.queue exposed by the PBS module.
The hook can accept or reject the reservation. Upon accept(), the reservation request gets confirmed status from the PBS server. Upon reject(), the following are the usecases:
If the reservation that was submitted has not yet started, the reservation object will be purged from the server.
If there is a confirmed reservation which has not yet started and and an alter requested on it, the reservation will continue to stay with it’s original attributes.
If there is a running reservation and an alter is requested on that, the reservation will continue to run with it’s original attributes.
A message - resv_confirm request rejected by <hook name> is added into the server logs.
On hitting the hook’s alarm, the hook gets rejected with a message - alarm call while running resv_confirm hook <hook name>, request rejected in the server logs
Usage:
qmgr -c "create hook h1 event=resv_confirm"
qmgr -c "import hook h1 application/x-python default <script path>"
In the following case, If someone tries to create a hook with a wrong event name:
...
Interface 2: server hook event - “resv_end”
Visibility: Public
Change Control: Experimental
Details:
The hook created for this event will be invoked when there is an end to the reservation.
- A new batch request PBS_BATCH_ResvOccurEnd shall be introduced which will be used to map the standing reservation occurrence end hook event.
This hook is created by pbsadmin and it will have read privileges to the server and the reservation objects.
The hook will run in foreground.
- The reservation object with in the hook can be created by an interface pbs.event().resv exposed by the PBS event module.
- The server object attributes can be accessed by the interface pbs.server() exposed by the PBS module.
- The reservation queue object attributes can be accessed by the interface pbs.event().resv.queue exposed by the PBS module.
- The hook shall be executed before the jobs are deleted from the reservation queue.
The hook can accept or reject the reservation. Upon reject(), the hook will not interrupt the execution of the process invoking it and a log message - resv_end request rejected by <hook name> is added in the server logs.
On hitting the hook’s alarm, the hook gets rejected with a message - alarm call while running resv_end hook <hook name>, request rejected in the server logs.
Usage:
qmgr -c "create hook h1 event=resv_end"
qmgr -c "import hook h1 application/x-python default <script path>"
In the following case, If one tries to create a hook with a wrong event name:
qmgr -c "s h h1 event=resvtest"
qmgr obj=h1 svr=default: invalid argument (resvtest) to event.
Should be one or more of: queuejob,modifyjob,resvsub,movejob,runjob,provision,periodic,resv_confirm,resv_end,execjob_begin,execjob_prologue,execjob_epilogue,execjob_preterm,
execjob_end,exechost_periodic,execjob_launch,exechost_startup or execjob_attach for no event.
qmgr: hook error returned from server.
Interface 3: server hook event - “endjob”
- Visibility: Public
- Change Control: Experimental
- Details:
- The hook created for this event will be invoked when the job ends at the server side.
- This hook is created by pbsadmin and it will have read privileges to the server and the job object.
- The job object with in the hook can be created by an interface pbs.event().job exposed by the PBS event module.
- The server attributes can be accessed by the interface pbs.server() exposed by the PBS module.
- The queue attributes related to the job can be accessed by the interface pbs.server().queue(<queue_name>) exposed by the server object.
- The node attributes related to the job can be accessed by the interface pbs.server().vnode(<vnode_name>) exposed by the server object.
- The hook will run in foreground.
- The hook can accept or reject the job. Upon reject(), the hook will not interrupt the execution of the process invoking it and a log message - endjob request rejected by <hook name> is added in the server logs.
- On hitting the hook’s alarm, the hook gets rejected with a message - alarm call while running endjob hook <hook name>, request rejected in the server logs.
Usage:
qmgr -c "create hook h1 event=job_end"
qmgr -c "import hook h1 application/x-python default <script path>"
In the following case, If one tries to create a hook with a wrong event name:
qmgr -c "s h h1 event=resvtest"
...
...