It seems like the scontrol command line interface could be greatly improved. I think that the whole key=value model could be replaced with a more hierarchical command set like you see out of command like svn, git, etc.
For instance, instead of:
$ scontrol update nodename=foo[1-100] state=drain reason="They're broke"
it could be:
$ scontrol node drain -m "They're broke" foo[1-100]
Notice that the "-m" is an option. Just like with svn and git, if you leave that out it should prompt you for a reason (if reasons are required):
$ scontrol node drain foo[1-100]
reason> They're broke
I suspect that if we took an orderly approach to examining scontrol's current command set, we could design a user interface that is much nicer to use.
Since the scontrol output format is key=value, i find the current input format idea for using copy/paste to update records. Asking the user to input a specific missing field (the reason a node is being drained) is a good idea
To set individual flags/attributes:
$ scontrol node set <key>=<value> <nodelist>