--[[ Example lua script demonstrating the SLURM job_submit/lua interface. This is only an example, not meant for use in its current form. Leave the function names, arguments, local varialbes and setmetatable set up logic in each function unchanged. Change only the logic after the lSUCCESSine containing "*** YOUR LOGIC GOES BELOW ***". For use, this script should be copied into a file name "job_submit.lua" in the same directory as the SLURM configuration file, slurm.conf. --]] function slurm_job_submit(job_desc, part_list, submit_uid) -- Check no default account if job_desc.account == "default" then slurm.log_user("You have to specify your project ID as part of your job submission. The account=default is now deprecated on M3 job scheduler.") return slurm.ERROR end -- Check Desktop requests with more than one node if ((job_desc.name == "desktop") and (job_desc.min_nodes > 1 )) then slurm.log_user("The current M3 Desktop applications are unable to utilise more than one node, please select one node instead") return slurm.ERROR end -- Check for gres.gpu requirements in m3c, m3h and m3g, else move job to comp if ((job_desc.partition == "m3c" ) or (job_desc.partition == "m3h" ) or (job_desc.partition == "m3g" )) then local partition = "" if (job_desc.gres == nil) then partition = "comp" slurm.log_info("slurm_job_submit: for user: %u, partition: %s", submit_uid, partition) job_desc.partition = partition end return slurm.SUCCESS end -- Check for QOS rtq in m3c, m3h , m3g and partition=nil, then forward job to rtqp,comp,m3g if ((job_desc.qos == "rtq") and (job_desc.partition == nil)) then local partition = "" partition = "rtqp,comp,m3g" slurm.log_info("slurm_job_submit: for user: %u, partition: %s", submit_uid, partition) job_desc.partition = partition return slurm.SUCCESS end end function slurm_job_modify(job_desc, job_rec, part_list, modify_uid) return slurm.SUCCESS end slurm.log_info("initialized") return slurm.SUCCESS