python-hostlist

The Python module hostlist.py knows how to expand and collect LLNL hostlists, as used by SLURM, pdsh, powerman, and genders, among other projects. An example:

  % python
  Python 2.5.1 (r251:54863, Jul 10 2008, 17:24:48) 
  [GCC 4.1.2 20070925 (Red Hat 4.1.2-33)] on linux2
  Type "help", "copyright", "credits" or "license" for more information.
  >>> import hostlist
  >>> hosts = hostlist.expand_hostlist("n[1-10,17]")
  >>> hosts
  ['n1', 'n2', 'n3', 'n4', 'n5', 'n6', 'n7', 'n8', 'n9', 'n10', 'n17']
  >>> hostlist.collect_hostlist(hosts)
  'n[1-10,17]'
  >>> hostlist.collect_hostlist(["x1y1","x2y2", "x1y2", "x2y1"])
  'x[1-2]y[1-2]'

Bad hostlists or hostnames will result in the hostlist.BadHostlist exception being raised.

The 'hostlist' command is provided to expand/collect hostlists and perform set operations on them. Example:

  % hostlist n[1-10] n[5-20]
  n[1-20]
  % hostlist --difference n[1-10] n[5-20]
  n[1-4]
  % hostlist --expand --intersection n[1-10] n[5-20] 
  n5
  n6
  n7
  n8
  n9
  n10
If you have questions, suggestions, bug reports or patches, please send them to kent@nsc.liu.se.

Related software

You might want to take a look at nodes too.

The ClusterShell project provides functionality similar to hostlist, nodes and pdsh.

Current release

Development

You can clone the external copy of the git repository using

git clone git://www.nsc.liu.se/~kent/python-hostlist.git

The master branch should contain the latest released version while the next branch may contain additional patches not yet released.

Older releases