<html><head><style type='text/css'>p { margin: 0; }</style></head><body><div style='font-family: times new roman,new york,times,serif; font-size: 12pt; color: #000000'>New update:<br><br>now cconfig is smarter in detecting that a node is alive.<br>instead of using ping, it tries to check that remote command port is opened.<br><br>Remote command port can be determined in the following ways by priority order.<br>1/ --service &lt;service name&gt; any service from /etc/service, or a port number. (tcp only)<br>&nbsp;&nbsp; ping, resolv or none can be specified as "fake" service.<br>&nbsp; - ping: ping node instead of trying to check a port.<br>&nbsp; - resolv: check only that the node can be resolved using gethostbyname()<br>&nbsp; - none: no test on remote node. used to restring 'check' command to c3.conf syntax.<br>2/ $C3_RSH. If set, cconfig will automatically check the associated service.<br>&nbsp;&nbsp; Only supports for ssh or rsh for now. (ssh-&gt;'ssh' and rsh-&gt;'shell')<br>3/ defaults to "ssh"<br><br>Example of usage:<br><br>cconfig check<br>cconfig check --file /tmp/c3.conf<br>cconfig check --service ping<br>C3_RSH="rsh" cconfig check<br>cconfig check --service 8649 # trick to check that nodes have a running gmond<br><br>./cconfig update --file /tmp/c3.conf --refreshstatuses --service ssh # all nodes that have ssh port closed (or that no not resolv) are marked as dead.<br><br>./cconfig update --file /tmp/c3.conf --refreshstatuses --service resolv # only hosts that do not resolv are marked as dead.<br><br>cconfig check --service none # do not test nodes, only check c3.conf syntax<br><br>You can get it here.<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>Best regards.<br><br>Olivier.<br><hr id="zwchr"><blockquote style="border-left:2px solid rgb(16, 16, 255);margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><b>De: </b>"LAHAYE Olivier" &lt;olivier.lahaye@cea.fr&gt;<br><b>À: </b>"C3 Users List ‎[c3-users@email.ornl.gov]‎" &lt;c3-users@email.ornl.gov&gt;<br><b>Cc: </b>c3-devel@ornl.gov<br><b>Envoyé: </b>Jeudi 3 Avril 2014 20:07:33<br><b>Objet: </b>[c3-users] cconfig v0.99 (smart replacement for c3_conf_manager)<br><br>


<style id="owaParaStyle">P {margin-top:0;margin-bottom:0;}</style>


<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 "release candidate".<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 "test[02-09]" --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 "dead dummy" 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 "ulys[31-34]" 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: ("dead dummy" 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 "dummy" 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>


<br>_______________________________________________<br>c3-users mailing list<br>c3-users@elist.ornl.gov<br>https://elist.ornl.gov/mailman/listinfo/c3-users<br></blockquote><br></div></body></html>