slurmrestd(8) Slurm REST Daemon slurmrestd(8) (NAME) slurmrestd - Slurm REST API. (SYNOPSIS) slurmrestd [OPTIONS...] <[host]:port|unix:/path/to/socket>... (DESCRIPTION) slurmrestd REST API Slurm . : Inetd (Inetd Mode): slurmrestd / (STDIO) . STDIN (file descriptor) slurmrestd . (piped input) inetd xinetd systemd . (Listen Mode): slurmrestd host:port . (OPTIONS) [https://][host]:port (port) . host IPv4/IPv6 (resolvable) . . host slurmrestd . https:// slurmrestd TLS . https:// slurmrestd TLS . unix:///path/to/socket . . -a [,plugin]... . . list . rest_auth/local auth/munge . : slurmrestd (UID) . rest_auth/jwt TCP AuthAltTypes=auth/jwt . HTTP : X-SLURM-USER-NAME: X-SLURM-USER-TOKEN: : <> . -d [,plugin]... data_parser . <<+>> . data_parser . OpenAPI -s . : data_parser . list[+flags] . latest . . [data_parser/]v0.0.40[+fast] [data_parser/]v0.0.40 . openapi/slurmctld openapi/slurmdbd . +fast . . [data_parser/]v0.0.41[+fast][+prefer_refs] [data_parser/]v0.0.41 . openapi/slurmctld openapi/slurmdbd . +fast . . +prefer_refs ( $ref) OpenAPI . [data_parser/]v0.0.42[+fast][+minimize_refs][+inline_enums] [data_parser/]v0.0.42 . openapi/slurmctld openapi/slurmdbd . +fast . . +minimize_refs ( $ref) OpenAPI . +inline_enums ( $ref) OpenAPI (enum). [data_parser/]v0.0.43[+fast][+minimize_refs] [data_parser/]v0.0.43 . openapi/slurmctld openapi/slurmdbd . +fast . . +minimize_refs ( $ref) OpenAPI . [data_parser/]v0.0.44[+fast][+minimize_refs] [data_parser/]v0.0.44 . openapi/slurmctld openapi/slurmdbd openapi/util . +fast . . +minimize_refs ( $ref) OpenAPI . -f Slurm . (NOTES) . --generate-openapi-spec (dump) OpenAPI JSON stdout . . <> JSON serializer/yaml . slurm.conf(5) -f /dev/null SLURM_CONF=/dev/null . -g (group id) ( ) . . SlurmUser (root) . -h, --help . --max-connections . slurmrestd . SYN . : RPC . . . (ulimit(3)) . : 124 -s [,plugin]... OpenAPI . AccountingStorageType=accounting_storage/slurmdbd slurm.conf(5) OpenAPI slurmctld,slurmdbd slurmctld . data_parser -d . list . [openapi/]slurmctld 'slurm/' data_parser . [openapi/]slurmdbd 'slurmdb/' data_parser . accounting_storage/slurmdbd . [openapi/]util 'util/' data_parser . Util utility slurmrestd . -t (threads) . inetd . -u (user id) . . SlurmUser (root) . -v (verbose). v 'v' ( -vvvvvv). . SLURMRESTD_DEBUG . -V . (TLS) slurmrestd TLS TLS . TLS Slurm . slurmrestd TLS HTTPS TLSType slurm.conf(5) . TLSParameters slurm.conf(5) . RPC TLS slurmrestd HTTPS TLS . slurmrestd TLS . TLS (handshakes) SSLv3 ( RFC#6101) TLSv1.x ( RFC#8446) (fingerprint) . TLS . TLS socket(2) [unix(2)] pipe(2) ( INETD) . https:// TLS . TLS . TLS slurmrestd TLS . slurmrestd TLS ( tls/none) . : tls/s2n ( -u ) : restd_cert_file.pem TLS x509. (CA) . (CN) . slurmrestd HTTP TLS . : sysconfdir autoconf(1) TLSParameters=restd_cert_file=/path/to/restd_cert_file.pem slurm.conf(5) . restd_cert_key_file.pem restd_cert_file.pem. slurmrestd . : sysconfdir autoconf(1) TLSParameters=restd_cert_key_file=/path/to/restd_cert_key.pem slurm.conf(5) . (ENVIRONMENT VARIABLES) slurmrestd . ABORT_ON_FATAL exit() abort() . (backtrace) Slurm . SLURM_CONF Slurm. SLURM_DEBUG_FLAGS slurmrestd. DebugFlags slurm.conf(5) . slurm.conf . SLURM_DEBUG . 0-9 SlurmctldDebug slurm.conf(5) . -v . SLURMRESTD_DEBUG SLURMRESTD_DEBUG_STDERR SLURMRESTD_DEBUG_SYSLOG . SLURMRESTD_DEBUG . SLURMRESTD_JSON SLURM_JSON JSON: compact JSON . pretty JSON (pretty) . SLURM_JWT JWT . SLURMRESTD_AUTH_TYPES . -a . SLURMRESTD_DEBUG . 0-9 SlurmctldDebug slurm.conf(5) . TTY stderr . TTY syslog . -v . SLURMRESTD_DEBUG_STDERR SLURMRESTD_DEBUG_SYSLOG . SLURMRESTD_DEBUG_STDERR STDERR. 0-9 SlurmctldDebug slurm.conf(5) . -v . SLURMRESTD_DEBUG_SYSLOG syslog. 0-9 SlurmctldDebug slurm.conf(5) . -v . SLURMRESTD_DATA_PARSER_PLUGINS data_parser . -d . SLURMRESTD_LISTEN host:port . SLURMRESTD_MAX_CONNECTIONS . --max-connections . SLURMRESTD_OPENAPI_PLUGINS OpenAPI . -s . SLURMRESTD_RESPONSE_STATUS_CODES OpenAPI OpenAPI. : 200,default SLURMRESTD_SECURITY slurmrestd : become_user slurmrestd (root) . rest_auth/local slurmrestd setuid()/setgid() / . inet . rest_auth/jwt slurmrestd "-a rest_auth/local" . disable_unshare_files (unsharing) . disable_unshare_sysv SYSV. disable_user_check slurmrestd (root) SlurmUser root SlurmUser . slurmrestd root SlurmUser . SLURMRESTD_YAML SLURM_YAML YAML: compact YAML . no_tag YAML !!tags . pretty YAML (pretty) . (SIGNALS) SIGINT slurmrestd . SIGPIPE . SIGPROF info . (NOTES) SPANK clifilter (lack of thread safety) slurmrestd . SPANK JobSubmitPlugins slurmctld slurmrestd . (EXAMPLES) OpenAPI : $ slurmrestd -f /dev/null --generate-openapi-spec -s slurmdbd,slurmctld -d v0.0.42 > openapi.json slurmrestd : $ export SLURMRESTD=/var/spool/slurm/restd/rest $ slurmrestd -s slurmctld,slurmdbd -d v0.0.42 unix:$SLURMRESTD slurmctld ping slurmrestd : $ export $(scontrol token) $ curl --unix-socket "${SLURMRESTD}" -H "X-SLURM-USER-TOKEN:${SLURM_JWT}" 'http://ignored_with_unix_sockets/slurm/v0.0.42/ping' | jq '.pings' [ { "hostname": "omicronpersei8", "pinged": "UP", "latency": 314, "mode": "primary" } ] slurmdbd diag slurmrestd : $ export $(scontrol token) $ curl --unix-socket "${SLURMRESTD}" -H "X-SLURM-USER-TOKEN:${SLURM_JWT}" 'http://ignored_with_unix_sockets/slurmdb/v0.0.42/diag' | jq '.pings' 1722009793 slurmrestd INETD : $ echo -e "GET http://ignored/slurm/v0.0.42/node/host1 HTTP/1.1\r\n" | slurmrestd HTTP/1.1 200 OK Content-Length: 3174 Content-Type: application/json { "nodes": [ { "architecture": "x86_64", "burstbuffer_network_address": "", "boards": 1, "boot_time": { "set": true, "infinite": false, "number": 1720820315 }, "cluster_name": "", "cores": 16, "specialized_cores": 0, "cpu_binding": 0, "cpu_load": 446, "free_mem": { "set": true, "infinite": false, "number": 39871 }, "cpus": 32, "effective_cpus": 32, "specialized_cpus": "", "energy": { "average_watts": 0, "base_consumed_energy": 0, "consumed_energy": 0, "current_watts": { "set": false, "infinite": false, "number": 0 }, "previous_consumed_energy": 0, "last_collected": 0 }, "external_sensors": {}, "extra": "", "power": {}, "features": [], "active_features": [], "gpu_spec": "", "gres": "gpu:fake1:1(S:0),gpu:fake2:1(S:0)", "gres_drained": "NA", "gres_used": "gpu:fake1:0(IDX:NA),gpu:fake2:0(IDX:NA)", "instance_id": "", "instance_type": "", "last_busy": { "set": true, "infinite": false, "number": 1722009794 }, "mcs_label": "", "specialized_memory": 0, "name": "host1", "next_state_after_reboot": [ "INVALID" ], "address": "localhost", "hostname": "omicronpersei8", "state": [ "IDLE" ], "operating_system": "Linux 6.5.0-44-generic #44-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 7 15:10:09 UTC 2024", "owner": "", "partitions": [ "debug" ], "port": 5015, "real_memory": 127927, "res_cores_per_gpu": 0, "comment": "", "reason": "", "reason_changed_at": { "set": true, "infinite": false, "number": 0 }, "reason_set_by_user": "", "resume_after": { "set": true, "infinite": false, "number": 0 }, "reservation": "", "alloc_memory": 0, "alloc_cpus": 0, "alloc_idle_cpus": 32, "tres_used": "", "tres_weighted": 0.0, "slurmd_start_time": { "set": true, "infinite": false, "number": 1722009794 }, "sockets": 1, "threads": 2, "temporary_disk": 0, "weight": 1, "tres": "cpu=32,mem=127927M,billing=32,gresgpu=2", "version": "24.11.0-0rc1" } ], "last_update": { "set": true, "infinite": false, "number": 1722010273 }, "meta": { <<< TRIMMED >>> }, "errors": [], "warnings": [] } (job) slurmrestd : $ jq . example_job.json { "job": { "script": "#!/bin/bash\nsleep 30", "name": "ExampleJob", "account": "sub1", "environment": [ "PATH=/usr/bin/:/bin/" ], "current_working_directory": "/tmp/", "tasks": 12, "memory_per_cpu": 100, "time_limit": 240 } } $ curl -H "Content-Type: application/json" --data-binary @example_job.json --unix-socket "${SLURMRESTD}" 'http://ignored/slurm/v0.0.42/job/submit' { "job_id": 9, "step_id": "batch", "job_submit_user_msg": "", "meta": { <<< TRIMMED >>> }, "errors": [], "warnings": [] } $ curl -H "Content-Type: application/json" --data-binary @example_job.json --unix-socket "${SLURMRESTD}" 'http://ignored/slurm/v0.0.42/job/submit' { "job_id": 7, "step_id": "batch", "job_submit_user_msg": "", "meta": { }, "errors": [], "warnings": [ { "description": "Expected OpenAPI type=array (Slurm type=list) but got OpenAPI type=object (Slurm type=dictionary): { "source": "#jobenvironment" } ] } (COPYING) Copyright (C) 2019-2022 SchedMD LLC. Slurm . . Slurm << >> (GNU General Public License) << >> ( ) / . Slurm . << >> . (SEE ALSO) slurm.conf(5), slurmctld(8), slurmdbd(8) Slurm 26.05 Slurm REST Daemon slurmrestd(8)