From 22b995c0ada1ce584aedc4d06b2b7471c1fec8f7 Mon Sep 17 00:00:00 2001 From: Marcin Stolarek <cinek@schedmd.com> Date: Tue, 19 Jan 2021 10:46:33 +0000 Subject: [PATCH] Docs - Add example cli_filter.lua script to etc/ Example of a cli_filter.lua script Bug 9405 --- etc/cli_filter.lua.example | 96 ++++++++++++++++++++++++++++++++++++++ slurm.spec | 2 + 2 files changed, 98 insertions(+) create mode 100644 etc/cli_filter.lua.example diff --git a/etc/cli_filter.lua.example b/etc/cli_filter.lua.example new file mode 100644 index 00000000000..b07ac07ef5c --- /dev/null +++ b/etc/cli_filter.lua.example @@ -0,0 +1,96 @@ +--[[ +--This is an example of cli_filter.lua script for Slurm +--More information about Slurm cli_filter: +-- https://slurm.schedmd.com/cli_filter_plugins.html +--To find names of options, take a look at: +-- src/common/slurm_opt.c +--]] + +function _find_in_str(str, arg) + if str ~= nil then + local place = string.find(str,arg) + if place == 1 + then + return true + else + return false + end + else + return false + end +end + +function slurm_cli_pre_submit(options, pack_offset) + + --[[ + -- Checks done in cli_filter can be worked around by users switching to different + -- SLURM_CONF or using their own build of tools where call to cli_filter was removed. + -- + -- If strict policy enforcement is a requirement than job_submit plugin should be used. + --]] + + if options["type"] == "srun" + then + if options["uid"] == "0" --[[or options["uid"] == SpecialUser]]-- + then + slurm.log_info("srun allowed for uid: %s", options["uid"]) + else + if options["pty"] == "set" + then + slurm.log_error("Use of srun with --pty is forbidden for uid: %s", options["uid"]) + return slurm.ERROR + end + end + end + + if options["type"] == "sbatch" and options["wrap"] ~= nil + then + slurm.log_error("--wrap option is forbidden"); + return slurm.ERROR + end + + local script_location = {} + script_location[1] = "/opt/supported_scripts" + script_location[2] = "/opt/supported_scripts2" + + local allowed = false + for idx,location in ipairs(script_location) + do + if _find_in_str(options.argv[1], location) + then + allowed = true + break + end + + end + + if allowed == false + then + slurm.log_error("You have to use scripts from one of:") + for idx, location in ipairs(script_location) + do + slurm.log_error("- %s", location) + end + return slurm.ERROR + end + + return slurm.SUCCESS + +end + +function slurm_cli_setup_defaults(options, early_pass) + + --[[ + -- Make --hint=nomultithread a default behavior + -- if user specifies other --hint=XX option then + -- it will override the setting done here + --]]-- + options['hint'] = 'nomultithread' + + return slurm.SUCCESS +end + +function slurm_cli_post_submit(offset, job_id, step_id) + slurm.log_info("Submitted: %d.%d component: %d", job_id, step_id, offset); + return slurm.SUCCESS +end diff --git a/slurm.spec b/slurm.spec index b1a5c9ebbb1..25c5184c8f3 100644 --- a/slurm.spec +++ b/slurm.spec @@ -412,6 +412,7 @@ install -D -m644 etc/slurmrestd.service %{buildroot}/%{_unitdir}/slurmrestd.ser install -D -m644 etc/cgroup.conf.example %{buildroot}/%{_sysconfdir}/cgroup.conf.example install -D -m644 etc/slurm.conf.example %{buildroot}/%{_sysconfdir}/slurm.conf.example install -D -m600 etc/slurmdbd.conf.example %{buildroot}/%{_sysconfdir}/slurmdbd.conf.example +install -D -m644 etc/cli_filter.lua.example %{buildroot}/%{_sysconfdir}/cli_filter.lua.example install -D -m755 contribs/sjstat %{buildroot}/%{_bindir}/sjstat # Delete unpackaged files: @@ -540,6 +541,7 @@ rm -rf %{buildroot} %config %{_sysconfdir}/cgroup.conf.example %config %{_sysconfdir}/slurm.conf.example %config %{_sysconfdir}/slurmdbd.conf.example +%config %{_sysconfdir}/cli_filter.lua.example ############################################################################# %files devel -- GitLab