ClusterShell 1.5.1__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.5.1 → clustershell-1.7}/ChangeLog +393 -1
- clustershell-1.7/README.md +128 -0
- {clustershell-1.5.1 → clustershell-1.7}/clustershell.spec +29 -6
- clustershell-1.7/conf/clush.conf +28 -0
- clustershell-1.7/conf/groups.conf +45 -0
- clustershell-1.7/conf/groups.conf.d/README +5 -0
- clustershell-1.7/conf/groups.conf.d/ace.conf.example +32 -0
- clustershell-1.7/conf/groups.conf.d/genders.conf.example +12 -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.5.1 → clustershell-1.7}/doc/epydoc/clustershell_epydoc.conf +0 -2
- clustershell-1.7/doc/examples/check_nodes.py +113 -0
- clustershell-1.7/doc/examples/defaults.conf-rsh +13 -0
- clustershell-1.7/doc/extras/vim/ftdetect/clustershell.vim +6 -0
- {clustershell-1.5.1 → clustershell-1.7}/doc/extras/vim/syntax/clushconf.vim +3 -2
- {clustershell-1.5.1 → clustershell-1.7}/doc/extras/vim/syntax/groupsconf.vim +10 -6
- {clustershell-1.5.1 → clustershell-1.7}/doc/man/man1/clubak.1 +15 -27
- {clustershell-1.5.1 → clustershell-1.7}/doc/man/man1/clush.1 +103 -95
- {clustershell-1.5.1 → clustershell-1.7}/doc/man/man1/nodeset.1 +132 -61
- {clustershell-1.5.1 → clustershell-1.7}/doc/man/man5/clush.conf.5 +36 -29
- clustershell-1.7/doc/man/man5/groups.conf.5 +213 -0
- 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.5.1 → clustershell-1.7}/doc/txt/clubak.txt +5 -4
- {clustershell-1.5.1 → clustershell-1.7}/doc/txt/clush.conf.txt +31 -14
- {clustershell-1.5.1 → clustershell-1.7}/doc/txt/clush.txt +81 -30
- {clustershell-1.5.1 → clustershell-1.7}/doc/txt/clustershell.rst +11 -8
- clustershell-1.7/doc/txt/groups.conf.txt +186 -0
- {clustershell-1.5.1 → clustershell-1.7}/doc/txt/nodeset.txt +73 -15
- {clustershell-1.5.1 → clustershell-1.7}/lib/ClusterShell/CLI/Clubak.py +58 -28
- {clustershell-1.5.1 → clustershell-1.7}/lib/ClusterShell/CLI/Clush.py +338 -137
- {clustershell-1.5.1 → clustershell-1.7}/lib/ClusterShell/CLI/Config.py +51 -18
- {clustershell-1.5.1 → clustershell-1.7}/lib/ClusterShell/CLI/Display.py +84 -13
- {clustershell-1.5.1 → clustershell-1.7}/lib/ClusterShell/CLI/Error.py +19 -10
- {clustershell-1.5.1 → clustershell-1.7}/lib/ClusterShell/CLI/Nodeset.py +145 -62
- {clustershell-1.5.1 → clustershell-1.7}/lib/ClusterShell/CLI/OptionParser.py +123 -59
- {clustershell-1.5.1 → clustershell-1.7}/lib/ClusterShell/CLI/Utils.py +22 -7
- clustershell-1.7/lib/ClusterShell/Communication.py +431 -0
- clustershell-1.7/lib/ClusterShell/Defaults.py +242 -0
- {clustershell-1.5.1 → clustershell-1.7}/lib/ClusterShell/Engine/EPoll.py +47 -63
- {clustershell-1.5.1 → clustershell-1.7}/lib/ClusterShell/Engine/Engine.py +238 -296
- {clustershell-1.5.1 → clustershell-1.7}/lib/ClusterShell/Engine/Factory.py +10 -5
- {clustershell-1.5.1 → clustershell-1.7}/lib/ClusterShell/Engine/Poll.py +39 -55
- {clustershell-1.5.1 → clustershell-1.7}/lib/ClusterShell/Engine/Select.py +29 -44
- clustershell-1.7/lib/ClusterShell/Event.py +163 -0
- clustershell-1.7/lib/ClusterShell/Gateway.py +359 -0
- {clustershell-1.5.1 → clustershell-1.7}/lib/ClusterShell/MsgTree.py +33 -28
- clustershell-1.7/lib/ClusterShell/NodeSet.py +1552 -0
- clustershell-1.7/lib/ClusterShell/NodeSet.py-XD2.py +1488 -0
- clustershell-1.7/lib/ClusterShell/NodeUtils.py +631 -0
- clustershell-1.7/lib/ClusterShell/Propagation.py +421 -0
- clustershell-1.7/lib/ClusterShell/RangeSet.py +1448 -0
- {clustershell-1.5.1 → clustershell-1.7}/lib/ClusterShell/Task.py +461 -252
- clustershell-1.7/lib/ClusterShell/Topology.py +461 -0
- 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.5.1 → clustershell-1.7}/lib/ClusterShell/Worker/Popen.py +54 -78
- 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.5.1 → clustershell-1.7}/lib/ClusterShell/Worker/fastsubprocess.py +3 -6
- {clustershell-1.5.1 → clustershell-1.7}/lib/ClusterShell/__init__.py +15 -14
- {clustershell-1.5.1 → clustershell-1.7}/scripts/clubak.py +0 -1
- {clustershell-1.5.1 → clustershell-1.7}/scripts/clush.py +0 -1
- {clustershell-1.5.1 → clustershell-1.7}/scripts/nodeset.py +0 -1
- {clustershell-1.5.1 → clustershell-1.7}/setup.py +29 -12
- clustershell-1.7/tests/CLIClubakTest.py +134 -0
- clustershell-1.7/tests/CLIClushTest.py +487 -0
- clustershell-1.5.1/tests/CLIConfig.py → clustershell-1.7/tests/CLIConfigTest.py +82 -22
- clustershell-1.5.1/tests/CLIDisplay.py → clustershell-1.7/tests/CLIDisplayTest.py +32 -36
- clustershell-1.7/tests/CLINodesetTest.py +719 -0
- clustershell-1.5.1/tests/CLIOptionParser.py → clustershell-1.7/tests/CLIOptionParserTest.py +2 -3
- clustershell-1.7/tests/DefaultsTest.py +202 -0
- {clustershell-1.5.1 → clustershell-1.7}/tests/MisusageTest.py +3 -3
- {clustershell-1.5.1 → clustershell-1.7}/tests/MsgTreeTest.py +81 -11
- clustershell-1.7/tests/NodeSetErrorTest.py +182 -0
- clustershell-1.7/tests/NodeSetGroupTest.py +1539 -0
- clustershell-1.7/tests/NodeSetTest.py +2502 -0
- {clustershell-1.5.1 → clustershell-1.7}/tests/RangeSetErrorTest.py +0 -1
- clustershell-1.7/tests/RangeSetNDTest.py +507 -0
- {clustershell-1.5.1 → clustershell-1.7}/tests/RangeSetTest.py +453 -59
- clustershell-1.7/tests/StreamWorkerTest.py +202 -0
- clustershell-1.7/tests/TLib.py +107 -0
- clustershell-1.5.1/tests/TaskDistantTest.py → clustershell-1.7/tests/TaskDistantMixin.py +332 -217
- 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.7/tests/TaskEventTest.py +252 -0
- clustershell-1.5.1/tests/TaskLocalTest.py → clustershell-1.7/tests/TaskLocalMixin.py +303 -88
- clustershell-1.7/tests/TaskLocalTest.py +66 -0
- {clustershell-1.5.1 → clustershell-1.7}/tests/TaskMsgTreeTest.py +62 -30
- {clustershell-1.5.1 → clustershell-1.7}/tests/TaskPortTest.py +0 -1
- {clustershell-1.5.1 → clustershell-1.7}/tests/TaskRLimitsTest.py +5 -4
- {clustershell-1.5.1 → clustershell-1.7}/tests/TaskThreadJoinTest.py +1 -7
- {clustershell-1.5.1 → clustershell-1.7}/tests/TaskThreadSuspendTest.py +0 -1
- {clustershell-1.5.1 → clustershell-1.7}/tests/TaskTimeoutTest.py +0 -1
- {clustershell-1.5.1 → clustershell-1.7}/tests/TaskTimerTest.py +94 -23
- 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.5.1 → clustershell-1.7}/tests/test_command.py +0 -1
- clustershell-1.5.1/README +0 -138
- clustershell-1.5.1/conf/clush.conf +0 -18
- clustershell-1.5.1/conf/groups.conf +0 -26
- clustershell-1.5.1/doc/extras/vim/ftdetect/clustershell.vim +0 -6
- clustershell-1.5.1/doc/man/man5/groups.conf.5 +0 -139
- clustershell-1.5.1/doc/txt/groups.conf.txt +0 -113
- clustershell-1.5.1/lib/ClusterShell/Event.py +0 -95
- clustershell-1.5.1/lib/ClusterShell/NodeSet.py +0 -1978
- clustershell-1.5.1/lib/ClusterShell/NodeUtils.py +0 -334
- clustershell-1.5.1/lib/ClusterShell/Worker/EngineClient.py +0 -429
- clustershell-1.5.1/lib/ClusterShell/Worker/Pdsh.py +0 -316
- clustershell-1.5.1/lib/ClusterShell/Worker/Ssh.py +0 -350
- clustershell-1.5.1/lib/ClusterShell/Worker/Worker.py +0 -536
- clustershell-1.5.1/tests/ClushScriptTest.py +0 -137
- clustershell-1.5.1/tests/NodeSetErrorTest.py +0 -72
- clustershell-1.5.1/tests/NodeSetGroupTest.py +0 -625
- clustershell-1.5.1/tests/NodeSetScriptTest.py +0 -339
- clustershell-1.5.1/tests/NodeSetTest.py +0 -1255
- clustershell-1.5.1/tests/TaskAdvancedTest.py +0 -138
- clustershell-1.5.1/tests/TaskDistantPdshTest.py +0 -490
- clustershell-1.5.1/tests/TaskEventTest.py +0 -156
- clustershell-1.5.1/tests/__init__.py +0 -0
- clustershell-1.5.1/tests/run_testsuite.py +0 -66
- {clustershell-1.5.1 → clustershell-1.7}/Licence_CeCILL-C_V1-en.txt +0 -0
- {clustershell-1.5.1 → clustershell-1.7}/Licence_CeCILL-C_V1-fr.txt +0 -0
- {clustershell-1.5.1 → clustershell-1.7}/doc/txt/README +0 -0
- {clustershell-1.5.1 → clustershell-1.7}/lib/ClusterShell/CLI/__init__.py +0 -0
- {clustershell-1.5.1 → clustershell-1.7}/lib/ClusterShell/Engine/__init__.py +0 -0
- {clustershell-1.5.1 → clustershell-1.7}/lib/ClusterShell/Worker/__init__.py +0 -0
- {clustershell-1.5.1 → clustershell-1.7}/setup.cfg +0 -0
|
@@ -1,3 +1,384 @@
|
|
|
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
|
+
|
|
207
|
+
2012-04-08 S. Thiell <stephane.thiell@cea.fr>
|
|
208
|
+
|
|
209
|
+
* Version 1.6 released.
|
|
210
|
+
|
|
211
|
+
* doc/guide: Add ClusterShell User and Programming Guide LaTeX source to
|
|
212
|
+
repository.
|
|
213
|
+
|
|
214
|
+
2012-04-07 S. Thiell <stephane.thiell@cea.fr>
|
|
215
|
+
|
|
216
|
+
* doc/examples/check_nodes.py: Add simple example of event-driven script.
|
|
217
|
+
|
|
218
|
+
2012-03-31 S. Thiell <stephane.thiell@cea.fr>
|
|
219
|
+
|
|
220
|
+
* CLI/Nodeset.py: Allow -a and common nodeset operations when using -l to
|
|
221
|
+
list belonging groups (a new 1.6 feature, see ticket #162).
|
|
222
|
+
|
|
223
|
+
2012-03-29 S. Thiell <stephane.thiell@cea.fr>
|
|
224
|
+
|
|
225
|
+
* Worker/Worker.py: added documentation for
|
|
226
|
+
worker.current_[node,msg,errmsg,rc] variables (ticket #160).
|
|
227
|
+
|
|
228
|
+
* Task.py: timeout parameters better explained (ticket #157).
|
|
229
|
+
|
|
230
|
+
2012-03-28 S. Thiell <stephane.thiell@cea.fr>
|
|
231
|
+
|
|
232
|
+
* CLI/OptionParser.py: Add --diff option to enable diff display between
|
|
233
|
+
gathered outputs. Enabled in clush and clubak (ticket #176).
|
|
234
|
+
|
|
235
|
+
* CLI/Display.py: Add _print_diff() and flush() methods.
|
|
236
|
+
|
|
237
|
+
* Task.py: Initialize MsgTree instances in constructor according to
|
|
238
|
+
default values in order to allow no-op calls to buffer getters before
|
|
239
|
+
resume() (ticket #186).
|
|
240
|
+
|
|
241
|
+
2012-03-26 S. Thiell <stephane.thiell@cea.fr>
|
|
242
|
+
|
|
243
|
+
* CLI/Clush.py: Fix clush --[r]copy behavior when no source directory is
|
|
244
|
+
specified (ticket #172).
|
|
245
|
+
|
|
246
|
+
* CLI/Clush.py: Fix interactive mode gather/standard toggle error, when
|
|
247
|
+
using special character '=' (ticket #171).
|
|
248
|
+
|
|
249
|
+
* CLI/Clubak.py: Add -v/-q verbosity options (ticket #174).
|
|
250
|
+
|
|
251
|
+
2012-03-24 S. Thiell <stephane.thiell@cea.fr>
|
|
252
|
+
|
|
253
|
+
* CLI/Clubak.py: Add --interpret-keys=never,always,auto option to clubak
|
|
254
|
+
to allow a more generic usage of clubak, ie. even in cases where keys are
|
|
255
|
+
not nodeset compliant (ticket #180).
|
|
256
|
+
|
|
257
|
+
2012-03-21 S. Thiell <stephane.thiell@cea.fr>
|
|
258
|
+
|
|
259
|
+
* conf/groups.conf: Fix group cross reference issue (ticket #183), we now
|
|
260
|
+
use sed commands instead of awk ones in this default groups.conf file.
|
|
261
|
+
|
|
262
|
+
2012-03-18 S. Thiell <stephane.thiell@cea.fr>
|
|
263
|
+
|
|
264
|
+
* conf/groups.conf: Fix default source regexp for mawk (ticket #178).
|
|
265
|
+
|
|
266
|
+
* Packaging: Add groups.conf.d directory and sample files.
|
|
267
|
+
|
|
268
|
+
2012-03-17 S. Thiell <stephane.thiell@cea.fr>
|
|
269
|
+
|
|
270
|
+
* CLI/Nodeset.py: Add support for -l[ll] <nodeset(s)> to list belonging
|
|
271
|
+
groups (CLI interface to NodeSet.groups()) (ticket #162).
|
|
272
|
+
|
|
273
|
+
* NodeSet: Add groups() public method to list groups nodeset belongs to.
|
|
274
|
+
|
|
275
|
+
2012-03-15 S. Thiell <stephane.thiell@cea.fr>
|
|
276
|
+
|
|
277
|
+
* NodeUtils.py: Add groupsdir option (ticket #179).
|
|
278
|
+
|
|
279
|
+
2012-03-14 S. Thiell <stephane.thiell@cea.fr>
|
|
280
|
+
|
|
281
|
+
* CLI/Nodeset.py: Add --contiguous splitting option (ticket #173).
|
|
282
|
+
|
|
283
|
+
* NodeSet.py: Add contiguous() iterator.
|
|
284
|
+
|
|
285
|
+
* RangeSet.py: Add contiguous() iterator.
|
|
286
|
+
|
|
287
|
+
* RangeSet.py: Allow slice object in fromone() constructor.
|
|
288
|
+
|
|
289
|
+
2012-02-26 S. Thiell <stephane.thiell@cea.fr>
|
|
290
|
+
|
|
291
|
+
* Gateway.py: Improved logging facility, configurable through
|
|
292
|
+
CLUSTERSHELL_GW_LOG_DIR and CLUSTERSHELL_GW_LOG_LEVEL environment
|
|
293
|
+
variables from the root node.
|
|
294
|
+
|
|
295
|
+
* Communication.py: Messages are now transfered in xml payload instead of
|
|
296
|
+
'output' attribute for improved handling of multi-lines messages in
|
|
297
|
+
StdOutMessage and StdErrMessage.
|
|
298
|
+
|
|
299
|
+
2012-02-24 S. Thiell <stephane.thiell@cea.fr>
|
|
300
|
+
|
|
301
|
+
* Worker/EngineClient.py: Fix gateway write performance issue, as seen on a
|
|
302
|
+
very large cluster with a no-grooming test case and lots of small messages
|
|
303
|
+
sent, by calling os.write() as soon as possible (might safely fail if not
|
|
304
|
+
ready as we are in non-blocking mode).
|
|
305
|
+
|
|
306
|
+
* NodeSet.py: Internal parsing optimization by adding a "should copy
|
|
307
|
+
RangeSet object?" flag to NodeSetBase constructor in order to save useless
|
|
308
|
+
but slightly costly RangeSet.copy() calls.
|
|
309
|
+
|
|
310
|
+
* NodeSet.py: Small rangeset parsing optimization on single node string
|
|
311
|
+
parsing code.
|
|
312
|
+
|
|
313
|
+
2012-02-19 S. Thiell <stephane.thiell@cea.fr>
|
|
314
|
+
|
|
315
|
+
* NodeSet.py: Add NodeSet.nsiter(), a fast iterator on nodes as NodeSet
|
|
316
|
+
objects to avoid object-to-string-to-object conversion in some cases when
|
|
317
|
+
using __iter__() -- like in PropagationTreeRouter.dispatch().
|
|
318
|
+
|
|
319
|
+
2012-02-15 S. Thiell <stephane.thiell@cea.fr>
|
|
320
|
+
|
|
321
|
+
* Clush.py: Add --topology <file> hidden option to enable V2 tree
|
|
322
|
+
propagation technology preview.
|
|
323
|
+
|
|
324
|
+
2012-02-01 S. Thiell <stephane.thiell@cea.fr>
|
|
325
|
+
|
|
326
|
+
* RangeSet.py: Fix RangeSet.__setstate__() for proper object unpickling
|
|
327
|
+
from older RangeSet versions. Add unpickling tests.
|
|
328
|
+
|
|
329
|
+
2012-01-28 S. Thiell <stephane.thiell@cea.fr>
|
|
330
|
+
|
|
331
|
+
* RangeSet.py: Discard AVL-tree based implementation, as we noticed that
|
|
332
|
+
built-in set is much faster. New implementation is based on built-in set,
|
|
333
|
+
and slightly changes padding and __iter__() behaviors. Padding value is
|
|
334
|
+
now accessible and settable at any time via a public variable "padding".
|
|
335
|
+
Auto-detection of padding is still available, but it is used as a
|
|
336
|
+
convenience for printing range sets. Moreover, all set-like operations are
|
|
337
|
+
now only based on integers, ignoring RangeSet's padding value. __iter__()
|
|
338
|
+
has been changed in order to iterate over sorted inner set integers,
|
|
339
|
+
instead of string items. A new method striter() is available to iterate
|
|
340
|
+
over string padding-enabled items. These changes allow us to offer a full
|
|
341
|
+
set-like API for RangeSet (new methods like isdisjoint(), pop(), etc. are
|
|
342
|
+
available according to your Python version). Also, a new constructor that
|
|
343
|
+
take any iterable of integers is available. Finally, this implementation
|
|
344
|
+
should much more faster than all previous ones, especially for large range
|
|
345
|
+
sets (ten thousand and more) with lots of holes.
|
|
346
|
+
|
|
347
|
+
2012-01-10 S. Thiell <stephane.thiell@cea.fr>
|
|
348
|
+
|
|
349
|
+
* RangeSet.py: Move RangeSet class from NodeSet.py to this new module
|
|
350
|
+
dedicated to scalable management of cluster range sets (tens of thousands
|
|
351
|
+
of disjoint ranges). Change internal algorithm used to manage ranges from
|
|
352
|
+
a list to an AVL-tree based on bintrees project's avltree implementation.
|
|
353
|
+
Got rid of expand/fold() methods that don't scale, all sets-like methods
|
|
354
|
+
have been rewritten using AVL-tree.
|
|
355
|
+
|
|
356
|
+
2012-01-04 S. Thiell <stephane.thiell@cea.fr>
|
|
357
|
+
|
|
358
|
+
* Task.py: Change behavior of shell()'s tree=None (auto) parameter: added
|
|
359
|
+
Task default parameter "auto_tree" defaulting to False and checked by
|
|
360
|
+
shell() when tree=None. This means that even with a valid topology
|
|
361
|
+
configuration file, the user has to explicitly enable tree mode for now.
|
|
362
|
+
This is for next 1.6 release and should be changed to True in version 2.0.
|
|
363
|
+
|
|
364
|
+
2011-11-28 S. Thiell <stephane.thiell@cea.fr>
|
|
365
|
+
|
|
366
|
+
* Task.py: Fix 'tree' option of shell(), which can be either True (force
|
|
367
|
+
enable tree mode), False (disable tree mode) and None (automatic).
|
|
368
|
+
|
|
369
|
+
2011-11-24 S. Thiell <stephane.thiell@cea.fr>
|
|
370
|
+
|
|
371
|
+
* CLI/Clush.py: Enable tree mode by default with grooming option.
|
|
372
|
+
|
|
373
|
+
* Worker/Tree.py: Integrate WorkerTree within ClusterShell Engine
|
|
374
|
+
framework, it will be used instead of PropagationTree.
|
|
375
|
+
|
|
376
|
+
* Engine/Engine.py: Inhibit any engine client changes when client is not
|
|
377
|
+
registered.
|
|
378
|
+
|
|
379
|
+
* Topology.py: Change DEFAULT section to Main section in topology.conf.
|
|
380
|
+
Cosmetic changes.
|
|
381
|
+
|
|
1
382
|
2011-06-09 S. Thiell <stephane.thiell@cea.fr>
|
|
2
383
|
|
|
3
384
|
* Version 1.5.1 released.
|
|
@@ -167,6 +548,17 @@
|
|
|
167
548
|
* CLI/Clush.py: Do not disable internal messages gathering when using -bL
|
|
168
549
|
for proper display after Ctrl-C interruption (#133).
|
|
169
550
|
|
|
551
|
+
2011-01-26 S. Thiell <stephane.thiell@cea.fr>
|
|
552
|
+
|
|
553
|
+
* tests/config: test config-template directory created.
|
|
554
|
+
|
|
555
|
+
2011-01-17 S. Thiell <stephane.thiell@cea.fr>
|
|
556
|
+
|
|
557
|
+
* Communication.py: New module from 2.0 dev branch (author: H. Doreau).
|
|
558
|
+
* Gateway.py: New module from 2.0 dev branch (author: H. Doreau).
|
|
559
|
+
* Propagation.py: New module from 2.0 dev branch (author: H. Doreau).
|
|
560
|
+
* Topology.py: New module from 2.0 dev branch (author: H. Doreau).
|
|
561
|
+
|
|
170
562
|
2011-01-15 S. Thiell <stephane.thiell@cea.fr>
|
|
171
563
|
|
|
172
564
|
* Version 1.4 released.
|
|
@@ -308,7 +700,7 @@
|
|
|
308
700
|
|
|
309
701
|
* setup.py: Switch to setuptools.
|
|
310
702
|
|
|
311
|
-
|
|
703
|
+
* clustershell.spec.in: Fix issue on el5 with if condition when defining
|
|
312
704
|
python_sitelib.
|
|
313
705
|
|
|
314
706
|
2010-08-26 S. Thiell <stephane.thiell@cea.fr>
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
ClusterShell 1.7 Python Library and Tools
|
|
2
|
+
=========================================
|
|
3
|
+
|
|
4
|
+
ClusterShell is an event-driven open source Python library, designed to run
|
|
5
|
+
local or distant commands in parallel on server farms or on large Linux
|
|
6
|
+
clusters. It will take care of common issues encountered on HPC clusters, such
|
|
7
|
+
as operating on groups of nodes, running distributed commands using optimized
|
|
8
|
+
execution algorithms, as well as gathering results and merging identical
|
|
9
|
+
outputs, or retrieving return codes. ClusterShell takes advantage of existing
|
|
10
|
+
remote shell facilities already installed on your systems, like SSH.
|
|
11
|
+
|
|
12
|
+
ClusterShell's primary goal is to improve the administration of high-
|
|
13
|
+
performance clusters by providing a lightweight but scalable Python API for
|
|
14
|
+
developers. It also provides clush, clubak and nodeset, three convenient
|
|
15
|
+
command-line tools that allow traditional shell scripts to benefit from some
|
|
16
|
+
of the library features.
|
|
17
|
+
|
|
18
|
+
Requirements (v1.7)
|
|
19
|
+
-------------------
|
|
20
|
+
|
|
21
|
+
* GNU/Linux, *BSD, Mac OS X
|
|
22
|
+
* OpenSSH (ssh/scp) or rsh
|
|
23
|
+
* Python 2.x (x >= 4)
|
|
24
|
+
* PyYAML (optional)
|
|
25
|
+
|
|
26
|
+
License
|
|
27
|
+
-------
|
|
28
|
+
|
|
29
|
+
ClusterShell is distributed under the CeCILL-C license, a French transposition
|
|
30
|
+
of the GNU LGPL, and is fully LGPL-compatible (see Licence_CeCILL-C_V1-en.txt).
|
|
31
|
+
|
|
32
|
+
Documentation
|
|
33
|
+
-------------
|
|
34
|
+
|
|
35
|
+
Online documentation is available here:
|
|
36
|
+
|
|
37
|
+
http://clustershell.readthedocs.org/
|
|
38
|
+
|
|
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
|
+
|
|
44
|
+
make html BUILDDIR=/dest/path
|
|
45
|
+
|
|
46
|
+
For local library API documentation, just type:
|
|
47
|
+
|
|
48
|
+
$ pydoc ClusterShell
|
|
49
|
+
|
|
50
|
+
The following man pages are also provided:
|
|
51
|
+
|
|
52
|
+
clush(1), clubak(1), nodeset(1), clush.conl(5), groups.conf(5)
|
|
53
|
+
|
|
54
|
+
Test Suite
|
|
55
|
+
----------
|
|
56
|
+
|
|
57
|
+
Regression testing scripts are available in the 'tests' directory:
|
|
58
|
+
|
|
59
|
+
$ cd tests
|
|
60
|
+
$ nosetests -sv <Test.py>
|
|
61
|
+
$ nosetests -sv --all-modules
|
|
62
|
+
|
|
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.
|
|
66
|
+
|
|
67
|
+
ClusterShell interactively
|
|
68
|
+
--------------------------
|
|
69
|
+
|
|
70
|
+
```python
|
|
71
|
+
>>> from ClusterShell.Task import task_self
|
|
72
|
+
>>> from ClusterShell.NodeSet import NodeSet
|
|
73
|
+
>>> task = task_self()
|
|
74
|
+
>>> task.run("/bin/uname -r", nodes="linux[4-6,32-39]")
|
|
75
|
+
<ClusterShell.Worker.Ssh.WorkerSsh object at 0x20a5e90>
|
|
76
|
+
>>> for buf, key in task.iter_buffers():
|
|
77
|
+
... print NodeSet.fromlist(key), buf
|
|
78
|
+
...
|
|
79
|
+
linux[32-39] 2.6.40.6-0.fc15.x86_64
|
|
80
|
+
|
|
81
|
+
linux[4-6] 2.6.32-71.el6.x86_64
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Links
|
|
85
|
+
-----
|
|
86
|
+
|
|
87
|
+
Web site:
|
|
88
|
+
|
|
89
|
+
http://clustershell.sourceforge.net
|
|
90
|
+
or http://cea-hpc.github.com/clustershell/
|
|
91
|
+
|
|
92
|
+
Online documentation:
|
|
93
|
+
|
|
94
|
+
http://clustershell.readthedocs.org/
|
|
95
|
+
|
|
96
|
+
Github source respository:
|
|
97
|
+
|
|
98
|
+
https://github.com/cea-hpc/clustershell
|
|
99
|
+
|
|
100
|
+
Github Wiki:
|
|
101
|
+
|
|
102
|
+
https://github.com/cea-hpc/clustershell/wiki
|
|
103
|
+
|
|
104
|
+
Github Issue tracking system:
|
|
105
|
+
|
|
106
|
+
https://github.com/cea-hpc/clustershell/issues
|
|
107
|
+
|
|
108
|
+
Sourceforge.net project page:
|
|
109
|
+
|
|
110
|
+
http://sourceforge.net/projects/clustershell
|
|
111
|
+
|
|
112
|
+
Python Package Index (PyPI) link:
|
|
113
|
+
|
|
114
|
+
http://pypi.python.org/pypi/ClusterShell
|
|
115
|
+
|
|
116
|
+
ClusterShell was born along with Shine, a scalable Lustre FS admin tool:
|
|
117
|
+
|
|
118
|
+
http://lustre-shine.sourceforge.net
|
|
119
|
+
|
|
120
|
+
Core developers/reviewers
|
|
121
|
+
-------------------------
|
|
122
|
+
|
|
123
|
+
* Stephane Thiell
|
|
124
|
+
* Aurelien Degremont
|
|
125
|
+
* Henri Doreau
|
|
126
|
+
* Dominique Martinet
|
|
127
|
+
|
|
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,11 +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
|
-
|
|
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
|
|
46
50
|
|
|
47
51
|
# man pages
|
|
48
52
|
install -d %{buildroot}/%{_mandir}/{man1,man5}
|
|
@@ -59,21 +63,31 @@ install -p -m 0644 doc/extras/vim/ftdetect/clustershell.vim %{buildroot}/%{vimda
|
|
|
59
63
|
install -p -m 0644 doc/extras/vim/syntax/clushconf.vim %{buildroot}/%{vimdatadir}/syntax/
|
|
60
64
|
install -p -m 0644 doc/extras/vim/syntax/groupsconf.vim %{buildroot}/%{vimdatadir}/syntax/
|
|
61
65
|
|
|
62
|
-
|
|
63
66
|
%clean
|
|
64
67
|
rm -rf %{buildroot}
|
|
65
68
|
|
|
66
69
|
%files
|
|
67
70
|
%defattr(-,root,root,-)
|
|
68
|
-
%doc README ChangeLog Licence_CeCILL-C_V1-en.txt Licence_CeCILL-C_V1-fr.txt
|
|
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
|
|
69
74
|
%{_mandir}/man1/clubak.1*
|
|
70
75
|
%{_mandir}/man1/clush.1*
|
|
71
76
|
%{_mandir}/man1/nodeset.1*
|
|
72
77
|
%{_mandir}/man5/clush.conf.5*
|
|
73
78
|
%{_mandir}/man5/groups.conf.5*
|
|
74
79
|
%dir %{_sysconfdir}/clustershell
|
|
80
|
+
%dir %{_sysconfdir}/clustershell/groups.d
|
|
81
|
+
%dir %{_sysconfdir}/clustershell/groups.conf.d
|
|
75
82
|
%config(noreplace) %{_sysconfdir}/clustershell/clush.conf
|
|
76
83
|
%config(noreplace) %{_sysconfdir}/clustershell/groups.conf
|
|
84
|
+
%ghost %{_sysconfdir}/clustershell/groups
|
|
85
|
+
%config(noreplace) %{_sysconfdir}/clustershell/groups.d/local.cfg
|
|
86
|
+
%doc %{_sysconfdir}/clustershell/groups.conf.d/README
|
|
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
|
|
77
91
|
%{python_sitelib}/ClusterShell/
|
|
78
92
|
%{python_sitelib}/ClusterShell-*-py?.?.egg-info
|
|
79
93
|
%{_bindir}/clubak
|
|
@@ -87,6 +101,15 @@ rm -rf %{buildroot}
|
|
|
87
101
|
%{vimdatadir}/syntax/groupsconf.vim
|
|
88
102
|
|
|
89
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
|
+
|
|
110
|
+
* Sun Apr 08 2012 Stephane Thiell <stephane.thiell@cea.fr> 1.6-1
|
|
111
|
+
- update to 1.6
|
|
112
|
+
|
|
90
113
|
* Thu Jun 09 2011 Stephane Thiell <stephane.thiell@cea.fr> 1.5.1-1
|
|
91
114
|
- update to 1.5.1
|
|
92
115
|
|
|
@@ -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
|