Make sinfo --states parsing and listing table-driven

_node_state_id() hand-coded a check for every node state flag, and the
list of valid states reported on error kept a second hand-maintained
copy, so both had to be touched whenever a node state flag was added --
and they had drifted from each other and from the man page.

Drive both from the shared node_state_flags[] table: _node_state_id()
matches flags with parse_node_state_flag(), and _node_state_list()
enumerates the same table via node_state_flag_index(). A newly
added flag then works with --states and is reported automatically.
NODE_RESUME is excluded from both -- it is a transient action flag, not
a state a node is reported in.

The base-state loop, the combined DRAIN/DRAINED/DRAINING states, and a
small set of legacy compact aliases (RESV, PLND, NO_RESPOND, BOOT,
BOOT^, REBOOT^) not present in node_state_flags[] are kept explicitly.
Every full state name and documented alias still parses; only a few
ambiguous partial prefixes (e.g. "power", "c") now resolve in the
canonical table order. The reported state list now uses the canonical
name of each state; compact aliases still parse but are no longer
listed. The drifted enumeration in the sinfo.1 man page is replaced with
a reference to the NODE STATE CODES section.

Ticket: 25499
4 files changed
tree: 7c114571a39825f7a44873bd21ce064d249819f4
  1. auxdir/
  2. CHANGELOG/
  3. contribs/
  4. debian/
  5. doc/
  6. etc/
  7. slurm/
  8. src/
  9. testsuite/
  10. tools/
  11. .clang-format
  12. .git-blame-ignore-revs
  13. .gitignore
  14. .pre-commit-config.yaml
  15. aclocal.m4
  16. AUTHORS
  17. CHANGELOG.md
  18. CODE_OF_CONDUCT.md
  19. CODEOWNERS
  20. config.h.in
  21. configure
  22. configure.ac
  23. CONTRIBUTING.md
  24. COPYING
  25. DISCLAIMER
  26. INSTALL
  27. LICENSE.OpenSSL
  28. make_ref.include
  29. Makefile.am
  30. Makefile.in
  31. META
  32. README.md
  33. RELEASE_NOTES.md
  34. SECURITY.md
  35. slurm.spec
README.md

Slurm Workload Manager

This is the Slurm Workload Manager. Slurm is an open-source cluster resource management and job scheduling system that strives to be simple, scalable, portable, fault-tolerant, and interconnect agnostic. Slurm currently has been tested only under Linux.

As a cluster resource manager, Slurm provides three key functions. First, it allocates exclusive and/or non-exclusive access to resources (compute nodes) to users for some duration of time so they can perform work. Second, it provides a framework for starting, executing, and monitoring work (normally a parallel job) on the set of allocated nodes. Finally, it arbitrates conflicting requests for resources by managing a queue of pending work.

NOTES FOR GITHUB DEVELOPERS

The official issue tracker for Slurm is at

: https://support.schedmd.com/

We welcome code contributions and patches. Please see the contributing guidelines for further details.

SOURCE DISTRIBUTION HIERARCHY

The top-level distribution directory contains this README as well as other high-level documentation files, and the scripts used to configure and build Slurm (see INSTALL). Subdirectories contain the source-code for Slurm as well as a test suite and further documentation. A quick description of the subdirectories of the Slurm distribution follows:

src/ [ Slurm source ]

: Slurm source code is further organized into self explanatory subdirectories such as src/api, src/slurmctld, etc.

doc/ [ Slurm documentation ]

: The documentation directory contains some latex, html, and ascii text papers, READMEs, and guides. Manual pages for the Slurm commands and configuration files are also under the doc/ directory.

etc/ [ Slurm configuration ]

: The etc/ directory contains a sample config file, as well as some scripts useful for running Slurm.

slurm/ [ Slurm include files ]

: This directory contains installed include files, such as slurm.h and slurm_errno.h, needed for compiling against the Slurm API.

testsuite/ [ Slurm test suite ]

: The testsuite directory contains an extensive collection of tests written for Check, Expect and Pytest.

auxdir/ [ autotools directory ]

: Directory for autotools scripts and files used to configure and build Slurm

contribs/ [ helpful tools outside of Slurm proper ]

: Directory for anything that is outside of slurm proper such as a different api or such. To have this build you need to do a make contrib/install-contrib.

COMPILING AND INSTALLING THE DISTRIBUTION

Please see the instructions at

: https://slurm.schedmd.com/quickstart_admin.html

Extensive documentation is available from our home page at

: https://slurm.schedmd.com/slurm.html

LEGAL

Slurm is provided "as is" and with no warranty. This software is distributed under the GNU General Public License, please see the files COPYING, DISCLAIMER, and LICENSE.OpenSSL for details.