<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<style id="owaParaStyle" type="text/css">P {margin-top:0;margin-bottom:0;}</style>
</head>
<body ocsi="0" fpstyle="1">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;"><br>
Hi,<br>
<br>
After few days of development, I've finaly reached a step were cconfig the c3_conf_manager full replacement is ready for &quot;release candidate&quot;.<br>
Feel free to test and report bugs.<br>
<br>
What is really cconfig?<br>
<br>
cconfig is a command line to to edit update and manage c3.conf file.<br>
it is able to:<br>
- Add or remove clusters<br>
- Add or remove nodes from clusters. can handle ranges with or without padding<br>
&nbsp; for example, range node[000-999] will end as node00[0-9] node0[10-99] node[100-999] in c3.conf<br>
- Enable or disable nodes can handle dead or excludes<br>
- Check that c3.conf is ok (also check for known hosts (head and nodes) and pingable nodes).<br>
- Sort nodes<br>
- list clusters<br>
- list nodes<br>
- set default cluster<br>
- handle or not the dead dummy node trick to avoid zero indexing<br>
- update nodes statuses (mak dead nodes that ping alive and alivenodes that do not resolv or ping as dead. Usefull in a crontab<br>
<br>
Many command can be restricted to a cluster or a subset of nodes within that cluster (update, disablenodes, enablenodes, ...)<br>
<br>
For more information, see the manual:<br>
=&gt; pod2man cconfig |nroff -man |more<br>
<br>
To get cconfig:<br>
wget <a href="http://svn.oscar.openclustergroup.org/oscar/trunk/bin/cconfig" target="_blank">
http://svn.oscar.openclustergroup.org/oscar/trunk/bin/cconfig</a><br>
<br>
To test, the --dry-run switch allows to avoid writing the result to c3.conf.<br>
alternate c3.conf file can be specified using the --file switch.<br>
<br>
Here are attached some example of what can be done.<br>
# Creating a cluster:<br>
./cconfig addcluster --cluster MegaCluster --nodes HeadHammer foo bar &quot;test[02-09]&quot; --noresolv --file /tmp/c3.conf<br>
<br>
# Creating a virtual cluster:<br>
./cconfig addcluster --cluster VirtualOne --nodes :remotehead --noresolv --file /tmp/c3.conf<br>
<br>
#&nbsp;Creating a third cluster with no dummy dead entry (use zero indexing)<br>
# The 1st node is a real node with name dummy<br>
./cconfig addcluster --cluster Zero --nodes local:private dummy wow[0-9] --zero --noresolv --file /tmp/c3.conf<br>
<br>
#&nbsp;disabling 1st node. this will result in a &quot;dead dummy&quot; entry as 1st node (index 0).<br>
# if --noresolv is used, then cconfig has no way to determine if node is a real node and will<br>
# ignore it if not specificaly specified with --nodes.<br>
./cconfig disablenodes --cluster Zero --nodes dummy wow[0-5] --file /tmp/c3.conf<br>
<br>
# Adding nodes:<br>
./cconfig addnodes --cluster MegaCluster --nodes node1 node2 node3 &quot;ulys[31-34]&quot; zzz test01 --sortnodes --noresolv --file /tmp/c3.conf<br>
<br>
#&nbsp;Removing nodes:<br>
./cconfig delnodes --cluster MegaCluster --nodes ulys[32-34] zzz --file /tmp/c3.conf<br>
<br>
#&nbsp;List known clusters:<br>
./cconfig listclusters --file /tmp/c3.conf<br>
<br>
#&nbsp;Enabling nodes in a cluster (sorting it at the same time)<br>
./cconfig enablenodes --cluster MegaCluster --sortnodes --noresolv --file /tmp/c3.conf<br>
<br>
#&nbsp;enabling all nodes in cluster Zero: (&quot;dead dummy&quot; is untouched this time)<br>
./cconfig enablenodes --cluster Zero --noresolv --file /tmp/c3.conf<br>
<br>
# But this time it is enabled.(in normal situation without --noresolv, if the &quot;dummy&quot; node<br>
# can be resolved (get ip), the command below wouldn't have been necessary).<br>
./cconfig enablenodes --cluster Zero --nodes dummy --noresolv --file /tmp/c3.conf<br>
<br>
#<br>
# Updating nodes status using ping.<br>
# Dead nodes that respond are enable<br>
# alive nodes that do not respond are disabled.<br>
#&nbsp;Update status of upper half nodes.<br>
./cconfig update --cluster MegaCluster --nodes test[05-09] --noresolv --file /tmp/c3.conf<br>
<br>
# Do a full update (all clusters).<br>
./cconfig update --noresolv --file /tmp/c3.conf<br>
<br>
# Disable some nodes for maintenance (e.g. power outage of a rack)<br>
./cconfig disablenodes --cluster MegaCluster --nodes foo test[01-03] test[06-08] --file /tmp/c3.conf<br>
<br>
# Deleting a cluster: (we do a dry-run this time, thus the output on stdout).<br>
./cconfig delcluster --cluster MegaCluster --dry-run --file /tmp/c3.conf<br>
<br>
# Now play with ranges and excludes.<br>
# 1st create a big cluster with padding.<br>
./cconfig addcluster --cluster oscar_cluster --nodes oscarnode[000-999] --file /tmp/c3.conf --noresolv --file /tmp/c3.conf<br>
# 2nd disable rack 5 that hosts nodes 090 to 120 to fix a PDU problem.<br>
./cconfig disablenodes --cluster oscar_cluster --nodes oscarnode[090-120] --file /tmp/c3.conf --file /tmp/c3.conf<br>
#&nbsp;3rd after restart only a few nodes have power, reenable them<br>
./cconfig enablenodes --cluster oscar_cluster --nodes oscarnode[095-105] --file /tmp/c3.conf --noresolv --file /tmp/c3.conf<br>
#&nbsp;4th everything fiwxed, reenable all nodes<br>
./cconfig enablenodes --cluster oscar_cluster --file /tmp/c3.conf --noresolv --file /tmp/c3.conf<br>
<br>
Best regards,<br>
<br>
Olivier.<br>
<div>
<div style="font-family:Tahoma; font-size:13px">
<div style="font-family:Tahoma; font-size:13px">
<div style="font-family:Tahoma; font-size:13px">
<div style="font-family:Tahoma; font-size:13px"><font face="Tahoma">-- <br>
&nbsp;&nbsp; Olivier LAHAYE<br>
&nbsp;&nbsp; CEA DRT/LIST/DIR</font><br>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>