diff --git a/etc/slurm/job_submit.lua b/etc/slurm/job_submit.lua new file mode 100644 index 0000000000000000000000000000000000000000..46d813325d3bdf81f14725b33a65cfd0b541a1e5 --- /dev/null +++ b/etc/slurm/job_submit.lua @@ -0,0 +1,72 @@ +--[[ + + Example lua script demonstrating the Slurm job_submit/lua interface. + This is only an example, not meant for use in its current form. + + 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 dump(o) + if type(o) == 'table' then + local s = '{ ' + for k,v in pairs(o) do + if type(k) ~= 'number' then k = '"'..k..'"' end + s = s .. '['..k..'] = ' .. dump(v) .. ',' + end + return s .. '} ' + else + return tostring(o) + end +end +-- Load necessary library +local pwd = require("posix").pwd +local grp = require("posix").grp + +function slurm_job_submit(job_desc, part_list, submit_uid) + + local target_group = "gpfs5" + local username = pwd.getpwuid(submit_uid).pw_name + local group_member = grp.getgrnam(target_group).gr_mem + local found = false + + slurm.log_info("username:" .. username) + slurm.log_info("job_desc:" .. dump(job_desc) .. type(job_desc)) + slurm.log_info("job_desc.features:" .. dump(job_desc.features)) + slurm.log_info("part_list:" .. dump(part_list) .. type(part_list)) + slurm.log_info("submit_uid:" .. dump(submit_uid) .. type(submit_uid)) + + -- Checking if the user is in the target_group + -- By compare group member and the username + for i,member in ipairs(group_member) do + if member == username then + found = true + job_desc.features = "gpfs5" + break + end + end + if found != true then + job_desc.features = "gpfs4" + end + + slurm.log_info("found:" .. dump(found)) + slurm.log_info("job_desc.features:" .. dump(job_desc.features)) + --slurm.log_user("job_desc.features: " .. dump(job_desc.features)) + + return slurm.SUCCESS +end + +function slurm_job_modify(job_desc, job_rec, part_list, modify_uid) + if job_desc.comment == nil then + local comment = "***TEST_COMMENT***" + slurm.log_info("slurm_job_modify: for job %u from uid %u, setting default comment value: %s", + job_rec.job_id, modify_uid, comment) + job_desc.comment = comment + end + + return slurm.SUCCESS +end + +slurm.log_info("initialized") +return slurm.SUCCESS +