ClusterShell 1.6__tar.gz → 1.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {clustershell-1.6 → clustershell-1.7}/ChangeLog +206 -0
- clustershell-1.6/README → clustershell-1.7/README.md +47 -71
- {clustershell-1.6 → clustershell-1.7}/clustershell.spec +24 -14
- clustershell-1.7/conf/clush.conf +28 -0
- clustershell-1.7/conf/groups.conf +45 -0
- {clustershell-1.6 → clustershell-1.7}/conf/groups.conf.d/README +1 -1
- clustershell-1.7/conf/groups.conf.d/ace.conf.example +32 -0
- clustershell-1.7/conf/groups.conf.d/slurm.conf.example +21 -0
- clustershell-1.7/conf/groups.d/README +22 -0
- clustershell-1.7/conf/groups.d/cluster.yaml.example +48 -0
- clustershell-1.7/conf/groups.d/local.cfg +17 -0
- clustershell-1.7/conf/topology.conf.example +12 -0
- clustershell-1.7/doc/examples/defaults.conf-rsh +13 -0
- clustershell-1.7/doc/extras/vim/ftdetect/clustershell.vim +6 -0
- {clustershell-1.6 → clustershell-1.7}/doc/extras/vim/syntax/clushconf.vim +3 -1
- {clustershell-1.6 → clustershell-1.7}/doc/extras/vim/syntax/groupsconf.vim +9 -6
- {clustershell-1.6 → clustershell-1.7}/doc/man/man1/clubak.1 +28 -44
- {clustershell-1.6 → clustershell-1.7}/doc/man/man1/clush.1 +103 -133
- {clustershell-1.6 → clustershell-1.7}/doc/man/man1/nodeset.1 +104 -71
- {clustershell-1.6 → clustershell-1.7}/doc/man/man5/clush.conf.5 +36 -29
- {clustershell-1.6 → clustershell-1.7}/doc/man/man5/groups.conf.5 +81 -35
- clustershell-1.7/doc/sphinx/Makefile +154 -0
- clustershell-1.7/doc/sphinx/_static/clustershell-nautilus-logo200.png +0 -0
- clustershell-1.7/doc/sphinx/_static/theme_overrides.css +12 -0
- clustershell-1.7/doc/sphinx/api/Defaults.rst +13 -0
- clustershell-1.7/doc/sphinx/api/EngineTimer.rst +9 -0
- clustershell-1.7/doc/sphinx/api/Event.rst +10 -0
- clustershell-1.7/doc/sphinx/api/MsgTree.rst +9 -0
- clustershell-1.7/doc/sphinx/api/NodeSet.rst +15 -0
- clustershell-1.7/doc/sphinx/api/NodeUtils.rst +15 -0
- clustershell-1.7/doc/sphinx/api/RangeSet.rst +17 -0
- clustershell-1.7/doc/sphinx/api/Task.rst +13 -0
- clustershell-1.7/doc/sphinx/api/index.rst +17 -0
- clustershell-1.7/doc/sphinx/api/workers/ExecWorker.rst +13 -0
- clustershell-1.7/doc/sphinx/api/workers/StreamWorker.rst +12 -0
- clustershell-1.7/doc/sphinx/api/workers/Worker.rst +13 -0
- clustershell-1.7/doc/sphinx/api/workers/WorkerPdsh.rst +16 -0
- clustershell-1.7/doc/sphinx/api/workers/WorkerPopen.rst +13 -0
- clustershell-1.7/doc/sphinx/api/workers/WorkerRsh.rst +16 -0
- clustershell-1.7/doc/sphinx/api/workers/WorkerSsh.rst +16 -0
- clustershell-1.7/doc/sphinx/api/workers/index.rst +22 -0
- clustershell-1.7/doc/sphinx/clustershell-nautilus-logo200.png +1 -0
- clustershell-1.7/doc/sphinx/conf.py +254 -0
- clustershell-1.7/doc/sphinx/config.rst +379 -0
- clustershell-1.7/doc/sphinx/further.rst +34 -0
- clustershell-1.7/doc/sphinx/guide/examples.rst +253 -0
- clustershell-1.7/doc/sphinx/guide/index.rst +21 -0
- clustershell-1.7/doc/sphinx/guide/nodesets.rst +319 -0
- clustershell-1.7/doc/sphinx/guide/rangesets.rst +76 -0
- clustershell-1.7/doc/sphinx/guide/taskmgnt.rst +313 -0
- clustershell-1.7/doc/sphinx/index.rst +25 -0
- clustershell-1.7/doc/sphinx/install.rst +189 -0
- clustershell-1.7/doc/sphinx/intro.rst +39 -0
- clustershell-1.7/doc/sphinx/release.rst +235 -0
- clustershell-1.7/doc/sphinx/tools/clubak.rst +94 -0
- clustershell-1.7/doc/sphinx/tools/clush.rst +515 -0
- clustershell-1.7/doc/sphinx/tools/index.rst +19 -0
- clustershell-1.7/doc/sphinx/tools/nodeset.rst +926 -0
- {clustershell-1.6 → clustershell-1.7}/doc/txt/clubak.txt +3 -3
- {clustershell-1.6 → clustershell-1.7}/doc/txt/clush.conf.txt +31 -14
- {clustershell-1.6 → clustershell-1.7}/doc/txt/clush.txt +32 -10
- {clustershell-1.6 → clustershell-1.7}/doc/txt/groups.conf.txt +67 -21
- {clustershell-1.6 → clustershell-1.7}/doc/txt/nodeset.txt +50 -14
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/CLI/Clubak.py +2 -2
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/CLI/Clush.py +292 -122
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/CLI/Config.py +48 -13
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/CLI/Display.py +8 -2
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/CLI/Error.py +14 -7
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/CLI/Nodeset.py +114 -63
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/CLI/OptionParser.py +107 -55
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/CLI/Utils.py +20 -3
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/Communication.py +105 -86
- clustershell-1.7/lib/ClusterShell/Defaults.py +242 -0
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/Engine/EPoll.py +44 -55
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/Engine/Engine.py +220 -270
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/Engine/Factory.py +10 -3
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/Engine/Poll.py +38 -52
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/Engine/Select.py +29 -42
- clustershell-1.7/lib/ClusterShell/Event.py +163 -0
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/Gateway.py +154 -73
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/MsgTree.py +33 -26
- clustershell-1.7/lib/ClusterShell/NodeSet.py +1552 -0
- clustershell-1.6/lib/ClusterShell/NodeSet.py → clustershell-1.7/lib/ClusterShell/NodeSet.py-XD2.py +489 -234
- clustershell-1.7/lib/ClusterShell/NodeUtils.py +631 -0
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/Propagation.py +155 -78
- clustershell-1.7/lib/ClusterShell/RangeSet.py +1448 -0
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/Task.py +294 -244
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/Topology.py +29 -12
- clustershell-1.7/lib/ClusterShell/Worker/EngineClient.py +530 -0
- clustershell-1.7/lib/ClusterShell/Worker/Exec.py +393 -0
- clustershell-1.7/lib/ClusterShell/Worker/Pdsh.py +276 -0
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/Worker/Popen.py +54 -76
- clustershell-1.7/lib/ClusterShell/Worker/Rsh.py +147 -0
- clustershell-1.7/lib/ClusterShell/Worker/Ssh.py +176 -0
- clustershell-1.7/lib/ClusterShell/Worker/Tree.py +431 -0
- clustershell-1.7/lib/ClusterShell/Worker/Worker.py +661 -0
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/__init__.py +6 -7
- {clustershell-1.6 → clustershell-1.7}/setup.py +29 -10
- {clustershell-1.6 → clustershell-1.7}/tests/CLIClubakTest.py +8 -10
- clustershell-1.7/tests/CLIClushTest.py +487 -0
- {clustershell-1.6 → clustershell-1.7}/tests/CLIConfigTest.py +82 -21
- {clustershell-1.6 → clustershell-1.7}/tests/CLIDisplayTest.py +32 -35
- {clustershell-1.6 → clustershell-1.7}/tests/CLINodesetTest.py +352 -53
- {clustershell-1.6 → clustershell-1.7}/tests/CLIOptionParserTest.py +2 -2
- clustershell-1.7/tests/DefaultsTest.py +202 -0
- {clustershell-1.6 → clustershell-1.7}/tests/MisusageTest.py +3 -2
- {clustershell-1.6 → clustershell-1.7}/tests/MsgTreeTest.py +55 -3
- clustershell-1.7/tests/NodeSetErrorTest.py +182 -0
- clustershell-1.7/tests/NodeSetGroupTest.py +1539 -0
- {clustershell-1.6 → clustershell-1.7}/tests/NodeSetTest.py +1213 -92
- clustershell-1.7/tests/RangeSetNDTest.py +507 -0
- {clustershell-1.6 → clustershell-1.7}/tests/RangeSetTest.py +16 -0
- clustershell-1.7/tests/StreamWorkerTest.py +202 -0
- clustershell-1.7/tests/TLib.py +107 -0
- clustershell-1.6/tests/TaskDistantTest.py → clustershell-1.7/tests/TaskDistantMixin.py +321 -210
- clustershell-1.7/tests/TaskDistantPdshMixin.py +527 -0
- clustershell-1.7/tests/TaskDistantPdshTest.py +68 -0
- clustershell-1.7/tests/TaskDistantTest.py +68 -0
- {clustershell-1.6 → clustershell-1.7}/tests/TaskEventTest.py +101 -19
- clustershell-1.6/tests/TaskLocalTest.py → clustershell-1.7/tests/TaskLocalMixin.py +303 -87
- clustershell-1.7/tests/TaskLocalTest.py +66 -0
- {clustershell-1.6 → clustershell-1.7}/tests/TaskMsgTreeTest.py +62 -29
- {clustershell-1.6 → clustershell-1.7}/tests/TaskRLimitsTest.py +3 -3
- {clustershell-1.6 → clustershell-1.7}/tests/TaskThreadJoinTest.py +1 -6
- {clustershell-1.6 → clustershell-1.7}/tests/TaskTimerTest.py +94 -22
- clustershell-1.7/tests/TreeCopyTest.py +71 -0
- clustershell-1.7/tests/TreeGatewayTest.py +470 -0
- clustershell-1.7/tests/TreeTaskTest.py +60 -0
- clustershell-1.7/tests/TreeTopologyTest.py +443 -0
- clustershell-1.7/tests/WorkerExecTest.py +149 -0
- clustershell-1.7/tests/fromlist_timeit.py +16 -0
- clustershell-1.7/tests/replace_timeit.py +12 -0
- clustershell-1.7/tests/t.py +9 -0
- clustershell-1.6/conf/clush.conf +0 -17
- clustershell-1.6/conf/groups +0 -7
- clustershell-1.6/conf/groups.conf +0 -23
- clustershell-1.6/conf/groups.conf.d/slurm.conf.example +0 -14
- clustershell-1.6/doc/extras/vim/ftdetect/clustershell.vim +0 -6
- clustershell-1.6/lib/ClusterShell/Event.py +0 -99
- clustershell-1.6/lib/ClusterShell/NodeUtils.py +0 -357
- clustershell-1.6/lib/ClusterShell/RangeSet.py +0 -729
- clustershell-1.6/lib/ClusterShell/Worker/EngineClient.py +0 -434
- clustershell-1.6/lib/ClusterShell/Worker/Pdsh.py +0 -314
- clustershell-1.6/lib/ClusterShell/Worker/Ssh.py +0 -348
- clustershell-1.6/lib/ClusterShell/Worker/Tree.py +0 -282
- clustershell-1.6/lib/ClusterShell/Worker/Worker.py +0 -577
- clustershell-1.6/tests/CLIClushTest.py +0 -244
- clustershell-1.6/tests/NodeSetErrorTest.py +0 -72
- clustershell-1.6/tests/NodeSetGroupTest.py +0 -734
- clustershell-1.6/tests/TLib.py +0 -78
- clustershell-1.6/tests/TaskAdvancedTest.py +0 -137
- clustershell-1.6/tests/TaskDistantPdshTest.py +0 -489
- clustershell-1.6/tests/binary_to_hex.py +0 -11
- {clustershell-1.6 → clustershell-1.7}/Licence_CeCILL-C_V1-en.txt +0 -0
- {clustershell-1.6 → clustershell-1.7}/Licence_CeCILL-C_V1-fr.txt +0 -0
- {clustershell-1.6 → clustershell-1.7}/conf/groups.conf.d/genders.conf.example +0 -0
- {clustershell-1.6 → clustershell-1.7}/doc/epydoc/clustershell_epydoc.conf +0 -0
- {clustershell-1.6 → clustershell-1.7}/doc/examples/check_nodes.py +0 -0
- {clustershell-1.6 → clustershell-1.7}/doc/txt/README +0 -0
- {clustershell-1.6 → clustershell-1.7}/doc/txt/clustershell.rst +0 -0
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/CLI/__init__.py +0 -0
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/Engine/__init__.py +0 -0
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/Worker/__init__.py +0 -0
- {clustershell-1.6 → clustershell-1.7}/lib/ClusterShell/Worker/fastsubprocess.py +0 -0
- {clustershell-1.6 → clustershell-1.7}/scripts/clubak.py +0 -0
- {clustershell-1.6 → clustershell-1.7}/scripts/clush.py +0 -0
- {clustershell-1.6 → clustershell-1.7}/scripts/nodeset.py +0 -0
- {clustershell-1.6 → clustershell-1.7}/setup.cfg +0 -0
- {clustershell-1.6 → clustershell-1.7}/tests/RangeSetErrorTest.py +0 -0
- {clustershell-1.6 → clustershell-1.7}/tests/TaskPortTest.py +0 -0
- {clustershell-1.6 → clustershell-1.7}/tests/TaskThreadSuspendTest.py +0 -0
- {clustershell-1.6 → clustershell-1.7}/tests/TaskTimeoutTest.py +0 -0
- {clustershell-1.6 → clustershell-1.7}/tests/test_command.py +0 -0
|
@@ -1,3 +1,209 @@
|
|
|
1
|
+
2015-11-10 S. Thiell <sthiell@stanford.edu>
|
|
2
|
+
|
|
3
|
+
* Version 1.7 released.
|
|
4
|
+
|
|
5
|
+
2015-11-01 S. Thiell <sthiell@stanford.edu>
|
|
6
|
+
|
|
7
|
+
* Clush.py: added -P/--progress to force display of the live progress
|
|
8
|
+
indicator and display global write bandwidth when writing standard input.
|
|
9
|
+
|
|
10
|
+
2015-10-25 S. Thiell <sthiell@stanford.edu>
|
|
11
|
+
|
|
12
|
+
* Clush.py: added --option/-O clush.conf settings override (pull
|
|
13
|
+
request #248).
|
|
14
|
+
|
|
15
|
+
2015-10-18 S. Thiell <sthiell@stanford.edu>
|
|
16
|
+
|
|
17
|
+
* Clush.py: added --hostfile command line option to specify a file
|
|
18
|
+
containing single hosts, node sets or node groups (ticket #235).
|
|
19
|
+
|
|
20
|
+
2015-10-16 S. Thiell <sthiell@stanford.edu>
|
|
21
|
+
|
|
22
|
+
* NodeSet.py: enhancing parser to recognize nodesets with brackets having
|
|
23
|
+
leading/trailing digits like in "prod-00[01-99]" (ticket #228).
|
|
24
|
+
|
|
25
|
+
2015-08-29 S. Thiell <sthiell@stanford.edu>
|
|
26
|
+
|
|
27
|
+
* CLI/Nodeset.py: added --axis option to choose nD fold axis (ticket
|
|
28
|
+
#269).
|
|
29
|
+
* NodeSet.py: added fold_axis public member to NodeSetBase along with
|
|
30
|
+
expand algorithm when casting to string to choose nD fold axis (ticket
|
|
31
|
+
#269).
|
|
32
|
+
|
|
33
|
+
2015-08-28 S. Thiell <sthiell@stanford.edu>
|
|
34
|
+
|
|
35
|
+
* CLI/Config.py: better per-user clush.conf support. clush now also checks
|
|
36
|
+
for $XDG_CONFIG_HOME/clustershell/clush.conf and
|
|
37
|
+
$HOME/.local/etc/clustershell/clush.conf (ticket #111).
|
|
38
|
+
|
|
39
|
+
2015-08-27 S. Thiell <sthiell@stanford.edu>
|
|
40
|
+
|
|
41
|
+
* CLI/Nodeset.py: add --list-all / -L to list groups from all group
|
|
42
|
+
sources (ticket #266). If repeated, it has the same behavior than -l.
|
|
43
|
+
|
|
44
|
+
* NodeUtils.py: add support for built-in groups definition files based on
|
|
45
|
+
YAML. Added autodir configuration option in groups.conf to declare a
|
|
46
|
+
directory where .yaml files are automatically loaded. Example available in
|
|
47
|
+
groups.d/cluster.yaml.example. Added support for groups.conf section with
|
|
48
|
+
multiple source names separated by comma. This is also the case for
|
|
49
|
+
groups.conf.d/*.conf extensions. Also added new upcall command $SOURCE
|
|
50
|
+
variable that is replaced by calling source name before execution.
|
|
51
|
+
Finally, /etc/clustershell/groups is now deprecated and replaced by
|
|
52
|
+
/etc/clustershell/groups.d/local.cfg for new installation (ticket #258).
|
|
53
|
+
|
|
54
|
+
2015-07-07 S. Thiell <sthiell@stanford.edu>
|
|
55
|
+
|
|
56
|
+
* CLI/Nodeset.py: add --autostep=auto and --autostep=x% option (#161).
|
|
57
|
+
|
|
58
|
+
* NodeSet: add autostep property to allow changing the way every RangeSet of
|
|
59
|
+
a NodeSet object is displayed (eg. node[2-8/2] instead of node[2,4,6,8]).
|
|
60
|
+
Autostep value is the min number of indexes that are found at equal distance
|
|
61
|
+
of each other inside a range before NodeSet starts to use this syntax.
|
|
62
|
+
|
|
63
|
+
2015-05-18 S. Thiell <stephane.thiell@cea.fr>
|
|
64
|
+
|
|
65
|
+
* Version 1.6.92 released.
|
|
66
|
+
|
|
67
|
+
2015-04-10 S. Thiell <stephane.thiell@cea.fr>
|
|
68
|
+
|
|
69
|
+
* Tree: implement task.copy() in tree mode using temporary tar file.
|
|
70
|
+
|
|
71
|
+
2015-04-01 S. Thiell <stephane.thiell@cea.fr>
|
|
72
|
+
|
|
73
|
+
* Tree: allow local command execution on gateways by adding remote=False to
|
|
74
|
+
task.shell()/run(). In practice with this patch, we can now easily
|
|
75
|
+
execute local commands on (remote) gateways using node argument like
|
|
76
|
+
`ipmitool -H %h` to spread the load between gateways.
|
|
77
|
+
|
|
78
|
+
2015-03-24 S. Thiell <stephane.thiell@cea.fr>
|
|
79
|
+
|
|
80
|
+
* NodeSet.py: disallow opening bracket after digit (ticket #228).
|
|
81
|
+
|
|
82
|
+
2015-03-23 S. Thiell <stephane.thiell@cea.fr>
|
|
83
|
+
|
|
84
|
+
* Clush.py: Warn user of possible use of shell globbing, especially when
|
|
85
|
+
using brackets and bash without GLOBIGNORE set (ticket #225).
|
|
86
|
+
* Clush.py: Fix --diff against null content (ticket #214).
|
|
87
|
+
|
|
88
|
+
2015-03-19 S. Thiell <stephane.thiell@cea.fr>
|
|
89
|
+
|
|
90
|
+
* Task.py: Make max_retcode() return None on no-op. Until now, max_retcode()
|
|
91
|
+
returned 0 by default, so even when no command was able to finish (for
|
|
92
|
+
example, due to reached timeout). This behavior did not allow users to
|
|
93
|
+
distinguish between successful commands and such no-op.
|
|
94
|
+
|
|
95
|
+
2015-03-11 S. Thiell <stephane.thiell@cea.fr>
|
|
96
|
+
|
|
97
|
+
* Worker.py: Introduce StreamWorker as a generic worker class to manage a
|
|
98
|
+
set of streams (using one EngineClient with multiple I/O streams
|
|
99
|
+
internally). It's a concrete class that is now used in Gateway.py to
|
|
100
|
+
manage I/O from the parent host in tree propagation mode. Also changed
|
|
101
|
+
WorkerSimple (and thus WorkerPopen) to inherit from StreamWorker.
|
|
102
|
+
|
|
103
|
+
2014-05-20 S. Thiell <stephane.thiell@cea.fr>
|
|
104
|
+
|
|
105
|
+
* EngineClient.py: Code improvement to support multiple customizable I/O
|
|
106
|
+
streams per EngineClient in different mode, each being named and having
|
|
107
|
+
their own read/write buffers and attributes.
|
|
108
|
+
|
|
109
|
+
2014-04-30 A. Degremont <aurelien.degremont@cea.fr>
|
|
110
|
+
|
|
111
|
+
* Clush.py: Add a 'worker' option to switch default worker (ticket #221).
|
|
112
|
+
|
|
113
|
+
2014-04-23 S. Thiell <stephane.thiell@cea.fr>
|
|
114
|
+
|
|
115
|
+
* EPoll.py: Close epoll control file descriptor when engine is released.
|
|
116
|
+
|
|
117
|
+
2014-01-26 A. Degremont <aurelien.degremont@cea.fr>
|
|
118
|
+
|
|
119
|
+
* NodeUtils.py: Add group source caching expiration (ticket #98).
|
|
120
|
+
|
|
121
|
+
2014-01-16 S. Thiell <stephane.thiell@cea.fr>
|
|
122
|
+
|
|
123
|
+
* RangeSet.py: Multidimensional RangeSet support (new RangeSetND class).
|
|
124
|
+
Created RangeSetND class to manage a matrix of RangeSet objects. Folding
|
|
125
|
+
of such objects is quite complex and time consuming. A special
|
|
126
|
+
optimization is provided when only one dimension is varying. Patch by
|
|
127
|
+
aurelien.degremont@cea.fr and stephane.thiell@cea.fr.
|
|
128
|
+
|
|
129
|
+
* NodeSet.py: Multidimensional nodeset support. Added support of
|
|
130
|
+
RangeSetND to NodeSet. Optimized NodeSet so that 1D NodeSet objects are
|
|
131
|
+
still using RangeSet (ticket #92). Also benefiting from RangeSetND
|
|
132
|
+
optimization when only one dimension is varying. Patch by
|
|
133
|
+
aurelien.degremont@cea.fr and stephane.thiell@cea.fr.
|
|
134
|
+
|
|
135
|
+
2014-01-14 S. Thiell <stephane.thiell@cea.fr>
|
|
136
|
+
|
|
137
|
+
* NodeSet.py: fix and clean fromall()/@* magic and add resolver option to
|
|
138
|
+
grouplist()'s NodeSet module function.
|
|
139
|
+
|
|
140
|
+
2014-01-14 S. Thiell <stephane.thiell@cea.fr>
|
|
141
|
+
|
|
142
|
+
* NodeSet.py: Define module API to access and set group resolver used for
|
|
143
|
+
@-prefixed (eg. '@group') resolution. This is used to circumvent accessing
|
|
144
|
+
and setting NodeSet module's variable 'RESOLVER_STD_GROUP' directly, which
|
|
145
|
+
is not convenient and error prone. The new functions are
|
|
146
|
+
std_group_resolver() and set_std_group_resolver(). Updated User Guide.
|
|
147
|
+
|
|
148
|
+
* CLI/Clush.py: ignore IOError on stdin reader thread, but print a warning
|
|
149
|
+
in verbose or debug mode (ticket #201).
|
|
150
|
+
|
|
151
|
+
2014-01-06 S. Thiell <stephane.thiell@cea.fr>
|
|
152
|
+
|
|
153
|
+
* NodeSet.py: Fix internal implementation of NodeSet.contiguous(), that
|
|
154
|
+
is, as NodeSet is mutable, we should avoid using the same NodeSet instance
|
|
155
|
+
in NodeSet.contiguous() for different NodeSet values.
|
|
156
|
+
|
|
157
|
+
2013-12-17 S. Thiell <stephane.thiell@cea.fr>
|
|
158
|
+
|
|
159
|
+
* Task.py: fix task.iter_buffers() and worker.iter_buffers() to allow
|
|
160
|
+
optional argument match_keys to be an empty list for convenience. It
|
|
161
|
+
should be set to None to disable match_keys check. Also check that
|
|
162
|
+
match_keys is a true key/node sequence and not a string.
|
|
163
|
+
|
|
164
|
+
2013-11-05 S. Thiell <stephane.thiell@cea.fr>
|
|
165
|
+
|
|
166
|
+
* EngineClient.py: Hide unwanted debug messages: when aborting a task,
|
|
167
|
+
cleanup of associated resources may lead to dropped inter-task messages
|
|
168
|
+
through the EnginePort mechanism. We now only display associated warning
|
|
169
|
+
messages when debugging is enabled...
|
|
170
|
+
|
|
171
|
+
* Task.py: Fix abort() race condition.
|
|
172
|
+
|
|
173
|
+
* CLI/Clush.py: Fix a defect to allow the use of command timeout when
|
|
174
|
+
copying files (with clush -u delay -c ..., ticket #220).
|
|
175
|
+
|
|
176
|
+
2013-11-04 A. Degremont <aurelien.degremont@cea.fr>
|
|
177
|
+
|
|
178
|
+
* Worker/Rsh.py: Add a Rsh worker. It is compatible with rsh clones
|
|
179
|
+
like mrsh/krsh. (ticket #216).
|
|
180
|
+
* Task.py: Add a 'worker' default option for Task object. It is used
|
|
181
|
+
in Task.shell() and Task.copy().
|
|
182
|
+
|
|
183
|
+
2012-09-13 S. Thiell <stephane.thiell@cea.fr>
|
|
184
|
+
|
|
185
|
+
* Engine.py: Allow EngineTimer with immediate fire date, that is, a fire
|
|
186
|
+
delay of 0s. Obviously not fired in time, such a timer will still be armed
|
|
187
|
+
and fired as soon as possible (ticket #200).
|
|
188
|
+
|
|
189
|
+
2012-08-27 S. Thiell <stephane.thiell@cea.fr>
|
|
190
|
+
|
|
191
|
+
* Engine.py: Fix catch-all used in case of KeyboardInterrupt exception
|
|
192
|
+
during runloop, resulting in ghost engine clients in that case and results
|
|
193
|
+
possibly not cleaned properly (ticket #199).
|
|
194
|
+
|
|
195
|
+
2012-08-01 S. Thiell <stephane.thiell@cea.fr>
|
|
196
|
+
|
|
197
|
+
* CLI/Clush.py: Fix clush_exit() side effects thanks to latest task
|
|
198
|
+
termination improvements (tickets #185).
|
|
199
|
+
|
|
200
|
+
* Task.py: Avoid termination race condition when using multiple threads
|
|
201
|
+
and calling abort()+join() from another thread (tickets #197).
|
|
202
|
+
|
|
203
|
+
2012-07-09 S. Thiell <stephane.thiell@cea.fr>
|
|
204
|
+
|
|
205
|
+
* NodeSet.py: "All nodes" extended pattern support with @* (ticket #193).
|
|
206
|
+
|
|
1
207
|
2012-04-08 S. Thiell <stephane.thiell@cea.fr>
|
|
2
208
|
|
|
3
209
|
* Version 1.6 released.
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
-----------------------------------------
|
|
1
|
+
ClusterShell 1.7 Python Library and Tools
|
|
2
|
+
=========================================
|
|
4
3
|
|
|
5
4
|
ClusterShell is an event-driven open source Python library, designed to run
|
|
6
5
|
local or distant commands in parallel on server farms or on large Linux
|
|
@@ -16,43 +15,44 @@ developers. It also provides clush, clubak and nodeset, three convenient
|
|
|
16
15
|
command-line tools that allow traditional shell scripts to benefit from some
|
|
17
16
|
of the library features.
|
|
18
17
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
-------------------
|
|
22
|
-
|
|
23
|
-
* GNU/Linux, *BSD, Mac OS X, etc.
|
|
24
|
-
|
|
25
|
-
* OpenSSH (ssh/scp)
|
|
18
|
+
Requirements (v1.7)
|
|
19
|
+
-------------------
|
|
26
20
|
|
|
21
|
+
* GNU/Linux, *BSD, Mac OS X
|
|
22
|
+
* OpenSSH (ssh/scp) or rsh
|
|
27
23
|
* Python 2.x (x >= 4)
|
|
24
|
+
* PyYAML (optional)
|
|
28
25
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-------
|
|
26
|
+
License
|
|
27
|
+
-------
|
|
32
28
|
|
|
33
29
|
ClusterShell is distributed under the CeCILL-C license, a French transposition
|
|
34
30
|
of the GNU LGPL, and is fully LGPL-compatible (see Licence_CeCILL-C_V1-en.txt).
|
|
35
31
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
32
|
+
Documentation
|
|
33
|
+
-------------
|
|
34
|
+
|
|
35
|
+
Online documentation is available here:
|
|
39
36
|
|
|
40
|
-
|
|
37
|
+
http://clustershell.readthedocs.org/
|
|
41
38
|
|
|
42
|
-
|
|
39
|
+
The Sphinx documentation source is available under the doc/sphinx directory.
|
|
40
|
+
Type 'make' to see all available formats (you need Sphinx installed and
|
|
41
|
+
sphinx_rtd_theme to build the documentation). For example, to generate html
|
|
42
|
+
docs, just type:
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
make html BUILDDIR=/dest/path
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
For local library API documentation, just type:
|
|
47
|
+
|
|
48
|
+
$ pydoc ClusterShell
|
|
48
49
|
|
|
49
|
-
|
|
50
|
+
The following man pages are also provided:
|
|
50
51
|
|
|
51
|
-
|
|
52
|
+
clush(1), clubak(1), nodeset(1), clush.conl(5), groups.conf(5)
|
|
52
53
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
----------
|
|
54
|
+
Test Suite
|
|
55
|
+
----------
|
|
56
56
|
|
|
57
57
|
Regression testing scripts are available in the 'tests' directory:
|
|
58
58
|
|
|
@@ -60,27 +60,14 @@ Regression testing scripts are available in the 'tests' directory:
|
|
|
60
60
|
$ nosetests -sv <Test.py>
|
|
61
61
|
$ nosetests -sv --all-modules
|
|
62
62
|
|
|
63
|
-
You have to allow 'ssh localhost'
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
Documentation
|
|
67
|
-
-------------
|
|
68
|
-
|
|
69
|
-
Local API documentation is available, just type:
|
|
70
|
-
|
|
71
|
-
$ pydoc ClusterShell
|
|
72
|
-
|
|
73
|
-
Online API documentation (epydoc) is available here:
|
|
74
|
-
|
|
75
|
-
http://packages.python.org/ClusterShell/
|
|
63
|
+
You have to allow 'ssh localhost' and 'ssh $HOSTNAME' without any warnings for
|
|
64
|
+
"remote" tests to run as expected. $HOSTNAME should not be 127.0.0.1 nor ::1.
|
|
65
|
+
Also some tests use the 'bc' command.
|
|
76
66
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
--------------------------
|
|
67
|
+
ClusterShell interactively
|
|
68
|
+
--------------------------
|
|
80
69
|
|
|
81
|
-
|
|
82
|
-
[GCC 4.6.0 20110331 (Red Hat 4.6.0-2)] on linux2
|
|
83
|
-
Type "help", "copyright", "credits" or "license" for more information.
|
|
70
|
+
```python
|
|
84
71
|
>>> from ClusterShell.Task import task_self
|
|
85
72
|
>>> from ClusterShell.NodeSet import NodeSet
|
|
86
73
|
>>> task = task_self()
|
|
@@ -92,32 +79,20 @@ Type "help", "copyright", "credits" or "license" for more information.
|
|
|
92
79
|
linux[32-39] 2.6.40.6-0.fc15.x86_64
|
|
93
80
|
|
|
94
81
|
linux[4-6] 2.6.32-71.el6.x86_64
|
|
82
|
+
```
|
|
95
83
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
------------------
|
|
99
|
-
|
|
100
|
-
Powerful tools are provided: clush, nodeset and clubak.
|
|
101
|
-
|
|
102
|
-
* clush is a friendly and full-featured parallel shell (see: man clush).
|
|
103
|
-
If in doubt, just check if your other parallel tools can do things like:
|
|
104
|
-
# tar -czf - dir | clush -w node[10-44] tar -C /tmp -xzvf -
|
|
105
|
-
|
|
106
|
-
* nodeset is used to deal with your cluster nodeset, it can be bound to
|
|
107
|
-
external groups (see: man nodeset and man groups.conf).
|
|
84
|
+
Links
|
|
85
|
+
-----
|
|
108
86
|
|
|
109
|
-
|
|
110
|
-
(already included in clush with -b), see man clubak.
|
|
111
|
-
|
|
112
|
-
-----
|
|
113
|
-
Links
|
|
114
|
-
-----
|
|
115
|
-
|
|
116
|
-
Main web site:
|
|
87
|
+
Web site:
|
|
117
88
|
|
|
118
89
|
http://clustershell.sourceforge.net
|
|
119
90
|
or http://cea-hpc.github.com/clustershell/
|
|
120
91
|
|
|
92
|
+
Online documentation:
|
|
93
|
+
|
|
94
|
+
http://clustershell.readthedocs.org/
|
|
95
|
+
|
|
121
96
|
Github source respository:
|
|
122
97
|
|
|
123
98
|
https://github.com/cea-hpc/clustershell
|
|
@@ -142,11 +117,12 @@ ClusterShell was born along with Shine, a scalable Lustre FS admin tool:
|
|
|
142
117
|
|
|
143
118
|
http://lustre-shine.sourceforge.net
|
|
144
119
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
-------
|
|
120
|
+
Core developers/reviewers
|
|
121
|
+
-------------------------
|
|
148
122
|
|
|
149
|
-
Stephane Thiell
|
|
150
|
-
Aurelien Degremont
|
|
123
|
+
* Stephane Thiell
|
|
124
|
+
* Aurelien Degremont
|
|
125
|
+
* Henri Doreau
|
|
126
|
+
* Dominique Martinet
|
|
151
127
|
|
|
152
|
-
CEA/DAM 2010, 2011, 2012 - http://www-hpc.cea.fr
|
|
128
|
+
CEA/DAM 2010, 2011, 2012, 2013, 2014, 2015 - http://www-hpc.cea.fr
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
|
|
2
2
|
|
|
3
3
|
Name: clustershell
|
|
4
|
-
Version: 1.
|
|
4
|
+
Version: 1.7
|
|
5
5
|
Release: 1%{?dist}
|
|
6
6
|
Summary: Python framework for efficient cluster administration
|
|
7
7
|
|
|
@@ -12,6 +12,7 @@ Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.g
|
|
|
12
12
|
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
|
|
13
13
|
BuildArch: noarch
|
|
14
14
|
BuildRequires: python-devel python-setuptools
|
|
15
|
+
Requires: PyYAML
|
|
15
16
|
|
|
16
17
|
%description
|
|
17
18
|
Tools and event-based Python library to execute commands on cluster nodes in
|
|
@@ -38,12 +39,14 @@ Syntax highlighting in the VIM editor for ClusterShell configuration files.
|
|
|
38
39
|
|
|
39
40
|
%install
|
|
40
41
|
rm -rf %{buildroot}
|
|
42
|
+
# install library (lib), scripts (bin) and config (etc)
|
|
41
43
|
%{__python} setup.py install -O1 --skip-build --root %{buildroot}
|
|
44
|
+
# move config dir away from default setuptools /usr prefix (if rpm-building as user)
|
|
45
|
+
[ -d %{buildroot}/usr/etc ] && mv %{buildroot}/usr/etc %{buildroot}/%{_sysconfdir}
|
|
42
46
|
|
|
43
|
-
#
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
install -p -m 0644 conf/groups.conf.d/README conf/groups.conf.d/*.conf.example %{buildroot}/%{_sysconfdir}/clustershell/groups.conf.d
|
|
47
|
+
# old versions of rpm (el5) requires that a file/link exists in buildroot even
|
|
48
|
+
# when ghosted, but it is not installed at the end...
|
|
49
|
+
ln -s conf/groups.d/local.cfg %{buildroot}/%{_sysconfdir}/clustershell/groups
|
|
47
50
|
|
|
48
51
|
# man pages
|
|
49
52
|
install -d %{buildroot}/%{_mandir}/{man1,man5}
|
|
@@ -53,11 +56,6 @@ install -p -m 0644 doc/man/man1/nodeset.1 %{buildroot}/%{_mandir}/man1/
|
|
|
53
56
|
install -p -m 0644 doc/man/man5/clush.conf.5 %{buildroot}/%{_mandir}/man5/
|
|
54
57
|
install -p -m 0644 doc/man/man5/groups.conf.5 %{buildroot}/%{_mandir}/man5/
|
|
55
58
|
|
|
56
|
-
# docs and example scripts
|
|
57
|
-
install -d %{buildroot}/%{_defaultdocdir}/%{name}-%{version}/examples
|
|
58
|
-
install -p -m 0644 README ChangeLog Licence_CeCILL-C_V1-en.txt Licence_CeCILL-C_V1-fr.txt %{buildroot}/%{_defaultdocdir}/%{name}-%{version}/
|
|
59
|
-
install -p -m 0755 doc/examples/*.py %{buildroot}/%{_defaultdocdir}/%{name}-%{version}/examples/
|
|
60
|
-
|
|
61
59
|
# vim addons
|
|
62
60
|
%define vimdatadir %{_datadir}/vim/vimfiles
|
|
63
61
|
install -d %{buildroot}/%{vimdatadir}/{ftdetect,syntax}
|
|
@@ -65,25 +63,31 @@ install -p -m 0644 doc/extras/vim/ftdetect/clustershell.vim %{buildroot}/%{vimda
|
|
|
65
63
|
install -p -m 0644 doc/extras/vim/syntax/clushconf.vim %{buildroot}/%{vimdatadir}/syntax/
|
|
66
64
|
install -p -m 0644 doc/extras/vim/syntax/groupsconf.vim %{buildroot}/%{vimdatadir}/syntax/
|
|
67
65
|
|
|
68
|
-
|
|
69
66
|
%clean
|
|
70
67
|
rm -rf %{buildroot}
|
|
71
68
|
|
|
72
69
|
%files
|
|
73
70
|
%defattr(-,root,root,-)
|
|
74
|
-
%doc
|
|
71
|
+
%doc README.md ChangeLog Licence_CeCILL-C_V1-en.txt Licence_CeCILL-C_V1-fr.txt
|
|
72
|
+
%doc doc/examples
|
|
73
|
+
%doc doc/sphinx
|
|
75
74
|
%{_mandir}/man1/clubak.1*
|
|
76
75
|
%{_mandir}/man1/clush.1*
|
|
77
76
|
%{_mandir}/man1/nodeset.1*
|
|
78
77
|
%{_mandir}/man5/clush.conf.5*
|
|
79
78
|
%{_mandir}/man5/groups.conf.5*
|
|
80
79
|
%dir %{_sysconfdir}/clustershell
|
|
80
|
+
%dir %{_sysconfdir}/clustershell/groups.d
|
|
81
|
+
%dir %{_sysconfdir}/clustershell/groups.conf.d
|
|
81
82
|
%config(noreplace) %{_sysconfdir}/clustershell/clush.conf
|
|
82
|
-
%config(noreplace) %{_sysconfdir}/clustershell/groups
|
|
83
83
|
%config(noreplace) %{_sysconfdir}/clustershell/groups.conf
|
|
84
|
-
%
|
|
84
|
+
%ghost %{_sysconfdir}/clustershell/groups
|
|
85
|
+
%config(noreplace) %{_sysconfdir}/clustershell/groups.d/local.cfg
|
|
85
86
|
%doc %{_sysconfdir}/clustershell/groups.conf.d/README
|
|
86
87
|
%doc %{_sysconfdir}/clustershell/groups.conf.d/*.conf.example
|
|
88
|
+
%doc %{_sysconfdir}/clustershell/groups.d/README
|
|
89
|
+
%doc %{_sysconfdir}/clustershell/groups.d/*.yaml.example
|
|
90
|
+
%doc %{_sysconfdir}/clustershell/topology.conf.example
|
|
87
91
|
%{python_sitelib}/ClusterShell/
|
|
88
92
|
%{python_sitelib}/ClusterShell-*-py?.?.egg-info
|
|
89
93
|
%{_bindir}/clubak
|
|
@@ -97,6 +101,12 @@ rm -rf %{buildroot}
|
|
|
97
101
|
%{vimdatadir}/syntax/groupsconf.vim
|
|
98
102
|
|
|
99
103
|
%changelog
|
|
104
|
+
* Tue Nov 10 2015 Stephane Thiell <sthiell@stanford.edu> 1.7-1
|
|
105
|
+
- update to 1.7
|
|
106
|
+
|
|
107
|
+
* Fri Aug 7 2015 Stephane Thiell <stephane.thiell@cea.fr> 1.6.96-1
|
|
108
|
+
- update to 1.6.96
|
|
109
|
+
|
|
100
110
|
* Sun Apr 08 2012 Stephane Thiell <stephane.thiell@cea.fr> 1.6-1
|
|
101
111
|
- update to 1.6
|
|
102
112
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Configuration file for clush
|
|
2
|
+
#
|
|
3
|
+
# Please see man clush.conf(5)
|
|
4
|
+
#
|
|
5
|
+
|
|
6
|
+
[Main]
|
|
7
|
+
fanout: 64
|
|
8
|
+
connect_timeout: 15
|
|
9
|
+
command_timeout: 0
|
|
10
|
+
color: auto
|
|
11
|
+
fd_max: 16384
|
|
12
|
+
history_size: 100
|
|
13
|
+
node_count: yes
|
|
14
|
+
verbosity: 1
|
|
15
|
+
|
|
16
|
+
# Add always all remote hosts to known_hosts without confirmation
|
|
17
|
+
#ssh_user: root
|
|
18
|
+
#ssh_path: /usr/bin/ssh
|
|
19
|
+
#ssh_options: -oStrictHostKeyChecking=no
|
|
20
|
+
|
|
21
|
+
# Non-interactively performing password authentication with SSH's so called
|
|
22
|
+
# "interactive keyboard password authentication".
|
|
23
|
+
#ssh_user: root
|
|
24
|
+
#ssh_path: /usr/bin/sshpass -f /root/remotepasswordfile /usr/bin/ssh
|
|
25
|
+
#scp_path: /usr/bin/sshpass -f /root/remotepasswordfile /usr/bin/scp
|
|
26
|
+
#ssh_options: -oBatchMode=no -oStrictHostKeyChecking=no
|
|
27
|
+
|
|
28
|
+
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# ClusterShell node groups main configuration file
|
|
2
|
+
#
|
|
3
|
+
# Please see `man 5 groups.conf` and
|
|
4
|
+
# http://clustershell.readthedocs.org/en/latest/config.html#node-groups
|
|
5
|
+
# for further details.
|
|
6
|
+
#
|
|
7
|
+
# NOTE: This is a simple group configuration example file, not a
|
|
8
|
+
# default config file. Please edit it to fit your own needs.
|
|
9
|
+
#
|
|
10
|
+
[Main]
|
|
11
|
+
|
|
12
|
+
# Default group source
|
|
13
|
+
default: local
|
|
14
|
+
|
|
15
|
+
# Group source config directory list (space separated, use quotes if needed).
|
|
16
|
+
# Examples are provided. Copy them from *.conf.example to *.conf to enable.
|
|
17
|
+
#
|
|
18
|
+
# $CFGDIR is replaced by the highest priority config directory found.
|
|
19
|
+
# Default confdir value enables both system-wide and user configuration.
|
|
20
|
+
confdir: /etc/clustershell/groups.conf.d $CFGDIR/groups.conf.d
|
|
21
|
+
|
|
22
|
+
# New in 1.7, autodir defines a directory list (space separated, use quotes if
|
|
23
|
+
# needed) where group data files will be auto-loaded.
|
|
24
|
+
# Only *.yaml file are loaded. Copy *.yaml.example files to enable.
|
|
25
|
+
# Group data files avoid the need of external calls for static config files.
|
|
26
|
+
#
|
|
27
|
+
# $CFGDIR is replaced by the highest priority config directory found.
|
|
28
|
+
# Default autodir value enables both system-wide and user configuration.
|
|
29
|
+
autodir: /etc/clustershell/groups.d $CFGDIR/groups.d
|
|
30
|
+
|
|
31
|
+
# Sections below also define group sources.
|
|
32
|
+
#
|
|
33
|
+
# NOTE: /etc/clustershell/groups is deprecated since version 1.7, thus if it
|
|
34
|
+
# doesn't exist, the "local.cfg" file from autodir will be used.
|
|
35
|
+
#
|
|
36
|
+
# See the documentation for $CFGDIR, $SOURCE, $GROUP and $NODE upcall special
|
|
37
|
+
# variables. Please remember that they are substitued before the shell command
|
|
38
|
+
# is effectively executed.
|
|
39
|
+
#
|
|
40
|
+
[local]
|
|
41
|
+
# flat file "group: nodeset" based group source using $CFGDIR/groups.d/local.cfg
|
|
42
|
+
# with backward support for /etc/clustershell/groups
|
|
43
|
+
map: [ -f $CFGDIR/groups ] && f=$CFGDIR/groups || f=$CFGDIR/groups.d/local.cfg; sed -n 's/^$GROUP:\(.*\)/\1/p' $f
|
|
44
|
+
all: [ -f $CFGDIR/groups ] && f=$CFGDIR/groups || f=$CFGDIR/groups.d/local.cfg; sed -n 's/^all:\(.*\)/\1/p' $f
|
|
45
|
+
list: [ -f $CFGDIR/groups ] && f=$CFGDIR/groups || f=$CFGDIR/groups.d/local.cfg; sed -n 's/^\([0-9A-Za-z_-]*\):.*/\1/p' $f
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
groups.conf.d/README
|
|
2
2
|
|
|
3
3
|
Default directory for additional node group sources configuration files.
|
|
4
|
-
ClusterShell scans the directory set by the
|
|
4
|
+
ClusterShell scans the directory set by the confdir variable, defined
|
|
5
5
|
in /etc/clustershell/groups.conf, loading all files of the form *.conf.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Additional ClusterShell group source config file
|
|
2
|
+
#
|
|
3
|
+
# Please see `man 5 groups.conf` for further details.
|
|
4
|
+
#
|
|
5
|
+
# This config file provided as an example of group sources for Cray
|
|
6
|
+
# Advanced Cluster Engine (ACE) system management software.
|
|
7
|
+
#
|
|
8
|
+
|
|
9
|
+
# ACE @type -> host(s)
|
|
10
|
+
#
|
|
11
|
+
# example:
|
|
12
|
+
# $ nodeset -f @ace:compute
|
|
13
|
+
# prod-[0001-0144]
|
|
14
|
+
#
|
|
15
|
+
[ace]
|
|
16
|
+
map: cd /acefs/servers; for s in server-*; do [[ $(cat $s/type) == $GROUP && -f $s/host/name ]] && cat $s/host/name; done || true
|
|
17
|
+
all: cat /acefs/servers/server-*/host/name
|
|
18
|
+
list: cd /acefs/servers; for s in server-*; do [ -f $s/host/name ] && cat $s/type; done | sort -u
|
|
19
|
+
|
|
20
|
+
# ACE @server -> host
|
|
21
|
+
#
|
|
22
|
+
# server is the permanent node name used by ACE
|
|
23
|
+
# host is the dynamic/current cluster node name
|
|
24
|
+
#
|
|
25
|
+
# example:
|
|
26
|
+
# $ nodeset -Gs ace-servers -r prod-0038
|
|
27
|
+
# @server-0042
|
|
28
|
+
#
|
|
29
|
+
[ace-servers]
|
|
30
|
+
map: [ -f /acefs/servers/$GROUP/host/name ] && cat /acefs/servers/$GROUP/host/name
|
|
31
|
+
all: cat /acefs/servers/server-*/host/name
|
|
32
|
+
list: cd /acefs/servers; for s in server-*; do [ -f $s/host/name ] && echo $s; done || true
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Additional ClusterShell group source config file
|
|
2
|
+
#
|
|
3
|
+
# Please see `man 5 groups.conf` for further details.
|
|
4
|
+
#
|
|
5
|
+
|
|
6
|
+
# SLURM partition bindings
|
|
7
|
+
#
|
|
8
|
+
[slurm]
|
|
9
|
+
map: sinfo -h -o "%N" -p $GROUP
|
|
10
|
+
all: sinfo -h -o "%N"
|
|
11
|
+
list: sinfo -h -o "%R"
|
|
12
|
+
reverse: sinfo -h -N -o "%R" -n $NODE
|
|
13
|
+
|
|
14
|
+
# SLURM state bindings
|
|
15
|
+
#
|
|
16
|
+
[slurmstate]
|
|
17
|
+
map: if [ "$GROUP" == "broken" ]; then sinfo -h -o "%N" -t down,drained; else sinfo -h -o "%N" -t $GROUP; fi
|
|
18
|
+
all: sinfo -h -o "%N"
|
|
19
|
+
list: sinfo -h -o "%T"
|
|
20
|
+
reverse: sinfo -h -N -o "%T" -n $NODE
|
|
21
|
+
cache_time: 300
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
groups.d/README
|
|
2
|
+
|
|
3
|
+
Default directory for YAML node group sources definition files.
|
|
4
|
+
ClusterShell scans the directory set by the autodir variable, defined
|
|
5
|
+
in /etc/clustershell/groups.conf, loading all files of the form *.yaml.
|
|
6
|
+
|
|
7
|
+
These files are automatically parsed by ClusterShell to avoid the need
|
|
8
|
+
of external upcalls for flat files-based group sources.
|
|
9
|
+
|
|
10
|
+
Each file may contain one or several group sources definitions.
|
|
11
|
+
Format of each YAML file is as follow:
|
|
12
|
+
|
|
13
|
+
source1:
|
|
14
|
+
group1: 'nodeset1'
|
|
15
|
+
group2: 'nodeset2'
|
|
16
|
+
|
|
17
|
+
source2:
|
|
18
|
+
group3: 'nodeset3'
|
|
19
|
+
group4: 'nodeset4'
|
|
20
|
+
...
|
|
21
|
+
|
|
22
|
+
Please take a look at *.yaml.example files for more examples.
|