diff --git a/job-submit.spec b/job-submit.spec index fe4f904..64c459a 100644 --- a/job-submit.spec +++ b/job-submit.spec @@ -1,76 +1,85 @@ %define fxdir /usr/share/lua/5.1/job_submit_fx %define name scitas-job-submit %define version 1.0.1 %define release 1%{?dist} Name: %{name} Version: %{version} Release: %{release} License: GPLv3 Summary: Collection of functions for job_submit.lua script URL: https://c4science.ch/source/scitas-job-submit Source0: %{name}-%{version}.tar.gz BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) %description Collection of functions developed in LUA, integrated into the slurm job_submit.lua script. %prep %setup -q %build %install install -m 755 -d %{buildroot}%{fxdir} install -m 755 -d %{buildroot}/etc/slurm/job_submit install -m 644 job_submit/* %{buildroot}/etc/slurm/job_submit install -m 644 job_submit.lua %{buildroot}/etc/slurm/job_submit.lua %define fxtarget billing_cost_estimate install -m 755 -d %{buildroot}%{fxdir}/%{fxtarget}/lua install -m 644 job_submit_fx/%{fxtarget}.lua %{buildroot}%{fxdir}/%{fxtarget}/init.lua install -m 644 job_submit_fx/%{fxtarget}.lua %{buildroot}%{fxdir}/%{fxtarget}/lua/init.lua %define fxtarget partition_setting install -m 755 -d %{buildroot}%{fxdir}/%{fxtarget}/lua install -m 644 job_submit_fx/%{fxtarget}.lua %{buildroot}%{fxdir}/%{fxtarget}/init.lua install -m 644 job_submit_fx/%{fxtarget}.lua %{buildroot}%{fxdir}/%{fxtarget}/lua/init.lua %define fxtarget scitas_cost install -m 755 -d %{buildroot}%{fxdir}/%{fxtarget}/lua install -m 644 job_submit_fx/%{fxtarget}.lua %{buildroot}%{fxdir}/%{fxtarget}/init.lua install -m 644 job_submit_fx/%{fxtarget}.lua %{buildroot}%{fxdir}/%{fxtarget}/lua/init.lua %define fxtarget scitas_debug install -m 755 -d %{buildroot}%{fxdir}/%{fxtarget}/lua install -m 644 job_submit_fx/%{fxtarget}.lua %{buildroot}%{fxdir}/%{fxtarget}/init.lua install -m 644 job_submit_fx/%{fxtarget}.lua %{buildroot}%{fxdir}/%{fxtarget}/lua/init.lua %define fxtarget track_gres install -m 755 -d %{buildroot}%{fxdir}/%{fxtarget}/lua install -m 644 job_submit_fx/%{fxtarget}.lua %{buildroot}%{fxdir}/%{fxtarget}/init.lua install -m 644 job_submit_fx/%{fxtarget}.lua %{buildroot}%{fxdir}/%{fxtarget}/lua/init.lua %define fxtarget verbose_mode install -m 755 -d %{buildroot}%{fxdir}/%{fxtarget}/lua install -m 644 job_submit_fx/%{fxtarget}.lua %{buildroot}%{fxdir}/%{fxtarget}/init.lua install -m 644 job_submit_fx/%{fxtarget}.lua %{buildroot}%{fxdir}/%{fxtarget}/lua/init.lua +%define fxtarget force_account +install -m 755 -d %{buildroot}%{fxdir}/%{fxtarget}/lua +install -m 644 job_submit_fx/%{fxtarget}.lua %{buildroot}%{fxdir}/%{fxtarget}/init.lua +install -m 644 job_submit_fx/%{fxtarget}.lua %{buildroot}%{fxdir}/%{fxtarget}/lua/init.lua + + + %files %config(noreplace) /etc/slurm/job_submit/* %{fxdir} /etc/slurm/job_submit.lua %clean rm -rf %{buildroot} %changelog +* Mon Jan 10 2022 Antonio J. RUSSO - 1.0.2 +- Add new function to force users to specify an account * Wed Sep 15 2021 Antonio J. RUSSO - 1.0.1 - Build and debug partitions become free * Mon Jul 26 2021 Antonio J. RUSSO - 1.0.0 - Initial RPM release diff --git a/job_submit.lua b/job_submit.lua old mode 100755 new mode 100644 index f91528f..fbd20ce --- a/job_submit.lua +++ b/job_submit.lua @@ -1,79 +1,88 @@ --########################################################################-- -- -- Load billing_cost_estimate parameters (can be overriden in rates_file) -- --########################################################################-- CONF_DIR = '/etc/slurm/job_submit' CONF_FILES = {'job_submit.conf', 'cluster.conf', 'rates.conf'} for index, file in ipairs(CONF_FILES) do filetoload = CONF_DIR.."/"..file file_fh = io.open(filetoload, "r") if file_fh == nil then slurm.log_info("slurm_job_modify: No readable %s found!", filetoload) else io.close(file_fh) dofile(filetoload) end end --- require fonctions verbose_mode, track_gres, scitas_cost.lua, partition_setting.lua --- if FX_VERBOSE then require('job_submit_fx/verbose_mode.lua') end if FX_TRACK_GRES then require('job_submit_fx/track_gres.lua') end if FX_SCITAS_COST then require('job_submit_fx/scitas_cost.lua') end if FX_PARTITION then require('job_submit_fx/partition_setting.lua') end +if FX_FORCE_ACCOUNT then + require('job_submit_fx/force_account.lua') +end + + function slurm_job_submit(job_desc, part_list, submit_uid) --- Verbose mode --- --- To enable verbose mode, you must set the verbose_mode variable to 1 if FX_VERBOSE then verbose_mode(job_desc) end if FX_PARTITION then local partition = partition_setting (job_desc, submit_uid, INFINITE, SEVENTY, PARALLEL_PARTITION, SERIAL_PARTITION) if job_desc.partition ~= partition then job_desc.partition = partition slurm.log_info("slurm_job_modify: for user %u , setting partition: %s", submit_uid, partition) end end if FX_TRACK_GRES then status = track_gres(job_desc, submit_uid) if status ~= 0 then return status end end if FX_SCITAS_COST then scitas_cost(job_desc, CPU_COST, GPU_COST, CORES_PER_NODE, GPUS_PER_NODE, DEFAULT_WTIME, DEFAULT_PARTITION, PARALLEL_PARTITION, SERIAL_PARTITION, submit_uid) end + if FX_FORCE_ACCOUNT then + force_account(job_desc) + end + return slurm.SUCCESS end -- The other required function function slurm_job_modify(job_desc, job_rec, part_list, modify_uid) return slurm.SUCCESS end slurm.log_info("job_submit_plugin initialized") return slurm.SUCCESS diff --git a/job_submit/job_submit.conf b/job_submit/job_submit.conf index ad11155..bc3b956 100644 --- a/job_submit/job_submit.conf +++ b/job_submit/job_submit.conf @@ -1,6 +1,6 @@ FX_VERBOSE = false -FX_VERBOSE = false +FX_FORCE_ACCOUNT = false FX_TRACK_GRES = false FX_SCITAS_COST = false FX_PARTITION = false ESLURM_INVALID_GRES = 2072 diff --git a/job_submit_fx/force_account.lua b/job_submit_fx/force_account.lua new file mode 100644 index 0000000..0d76d63 --- /dev/null +++ b/job_submit_fx/force_account.lua @@ -0,0 +1,7 @@ +function force_account(job_desc) + if job_desc.account == nil then + slurm.log_info("User "..job_desc.user_id.." did not specify a valid account.") + slurm.log_user("WARNING: You must specify a valid account") +-- return slurm.ESLURM_INVALID_ACCOUNT + end +end