Design Document for PP-912

  Interface : 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"
           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,endjob,execjob_begin,execjob_prologue,execjob_epilogue,execjob_preterm,
execjob_end,exechost_periodic,execjob_launch,exechost_startup or execjob_attach or "" for no event.
qmgr: hook error returned from server