?=dA YA   @   @    "8%{((+++ + , (,8,9/,:IFYGYH\TI^X_Y_\_]bl^obsdsesfskslstsuvvy$w~x4yC zvy4/O02m!?C@0pIM^Q;NR,EQvRG4oPZ8M\]O?C@0pIM^Q;Z,k05aݎ1"ǃr7Sn63d92216af0ce9db3ea1b709e17c9a5484e2c363redhat-config-cluster1.0.81redhat-config-cluster is a utility which allows you to configure a Red Hat Clumanager cluster.redhat-config-cluster is a utility which allows you to configure a Red Hat Clumanager cluster.C@tyler.byteclub.net"aDCentOS-3CentOSGPLApplications/Systemhttp://www.redhat.com/linuxnoarch|Y :97E:FW"32{ N(9X@LW'LWBS-$aU>NO' ,D#J$\j K +" ? M;T   T F| IS 7* gYZ(.< +  Y "5'oj2?qE?)jg?)jg?C-?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)l3?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)jg?)l3?)jgC-?)jg?)jg?)jg?)jg?)jgC@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@f839538f30b426b69bc3fc71eb69aec13db32ad1d4f621af9a1f25619523e3b2469f9b853b820363c33af50067835fcf0636e73ff0215e8d672dc4c32c317bb310fc7db2a52badc29ff84bdeeb44bbde1a22401796c1f978ebf3d41f1680d3128cc7093dc38a22f3cdbd83f151bd9fb06959e98b2db9fbf38e0ef7cd528238c92790c609b66088347d90b47639508e0bfef56c530f4116beed06ac231ba5872f0369dad766cd7962302c868d9aa0e482c541348d03b04cfe087e17eadb65d16ff40c3d430c2a4d6c46484c803e3a093ebec6fb219e4d6b1d8c707553bf85e2a271633eb851701719cf768d4bf82a20158c9670b9f0832a4c45c137a36f1b309f71633eb851701719cf768d4bf82a201503fe2a25ddcb8a8d090e51e878131207c64fb1a9b576b788db37363d005cd2db774c692fa289f7a7178e58d289f6ebfd9ce7a788adcc3dd108645a292d1e294cdb72e097152bf2fca3896ea69f6f81b394dfede4294125da598635c110806bf37a08b5d6b818762eeca440ddad04e729860a7846a909252a8925b0d9d7d3ae5971622573675a4d295a897134576ce0ff53e5c929c15563fcc3ffdc54f063de0c255b7b9a1ab7a62612c72ca845e86b3939ea14cfe2dcbcb59fc2f846227136f82327ad7c1b9b85a52e49d7f13ae8ff0b624f0e22548ba749cce7d69925057de3ee1ec03ce210699aa7d41a867b3e04e9b2da2b38ce38e4e9336141119e8e8e2735ba0887bd5a5c1f4376ee214d413ee26678bec8f0a38ce293cc52846bb47d378371648ec015438eeaae1ad9d804bf898500c123a8fac4cf489a89c9fb443eec592220c7d580f9aedeb8fe1a81284d995a54ce9935c10e6718d1967726299d7b5048c2ab3c90b260642220877f4815c60ca42ae31747c1ac77aec7e785c714d7631f513d5d8fb3ccd0348c5382dc94cf907115090a2f4ee7081c7ead34416aba5e37e8c9a2c1f256fa660f8a6fdb56551a9d3ad585a3a35b99d8ecf076bfa7f196bd0417a55c41ab040b373cd4575cce31438fa96ac8418b8ebdf8bded72c17d3dafb30963d2a938277764bcf0afe26576d2e9d2c4419492138e90ec8bff87e68e8c592ab021b866e86a793378955b2ef2afd490a54d5701ca427b5cf36ea9b06262720dd0be872fc72a042eb8cf823f63a13648173171897f94a4e85db8472c3feb886a04fc05995e6f0ea46f09507652367390eecc8d371ec177a9fef15ff1fa99e41abe2889a4f1e1fd3f6c5d8b0ef28691c5b833987262c3a83fe5dceb64f2a9f861ab3788d59be26d85db855ec9e8ceb8dbba76a28c1894d65844cd81f3f2eee127fd0d488cc94b0a94b7e2a0e1c1c248ad0236ae1a9994dd5827b9d8c8b8cdc4d30a5812405b7000ed34f1833b5035325571b4bb80d4d2f73bb11ebcb010b505b416a9e00d36ad5b538959d4bfacfe7329bc73a6885dd7159912a08ad625ee129053a90e203114fddd7007fc3d9768c5371463ea08e8e1ee4e327268383202844a92dbc1d3cbf874e67e6182aebef25a28a0db0950b9d9890ba7783ab89445c795a42f4eeb7e4d42a613768385532c824894c442fdbc3b1c83d79ac77f1c68f454948e90de3bd1d3d857ad31f4df8a5b7d2d77d63f7d9811d2bc28fc36b715a958e5ec6b19aa4e2ace201749a0f2db25a7e1aea92406193fc3557aa46f57deb17b39fccc810f91d65f59ece7eebf23a220e48c604eddd60fb12de943d3814e1e54645318856b42c96da044da8edec1070742a09fe198c383d4bf84083fb57f0998391f34b8ac1b7f98d88e0166839053a00af7172c261c33b9abcbea969bf2f233b1c1b51fb59374f9a9daaae91a7e61b91946c35267be51be406cfc8b083c5c6c686e10d3fd1c52851ab6559adaa16b0383f671d9f89a9ad6547d1cc06db63bc19dcbd0fe0e0af57b829ac4db2c11f3bab615ad13ff6df86e5f3c5dfde970ba58444e4b90a77c262aae8a0dc3c39d85727bc32cb07d09626359d5b2523a57d6d480a31f711272b52d92c9eb721b3ef8bc49e3b8036df813b69911b100dfe004f8212eda24e0355bb50c075878cc81188975c6d236d82bdf3de3c3999e8b2f8cb1f1b095dc7036e058e7221d451720af91f6ca27239e55a639f3a0a08bb0020308027dff00d255c2d81f108a9f28afd05f6d0710055314f651074795e6b8fbbfcfa75d47a171ec05f3432a7c19f7dd9876e422850e095a894ed7501ef66ed8bc8fe7ab3c2fffe53240142e6025b5aed01827f9793cba72f21fb4ec38532a4048f2b881ea135966d040e82da016cf1d437bce89493cc095a8bf5b9ba404d18a7f10fe1adad0a3690a6b91638d305386c8a3277aa2d47668604cde309653e862663687feebe546c1b9b68b9bee69ac387f6ecd244e5d12d271be26c1ae8eb13072e4e94e0978c8570f48629746a6e920bbc0dd1853e56f917eeb754fc0813d36642df3693ff5089e5fc2852353104fe3cce8c35db01b0bf4aacf3ac4a6777b61a163dc4339cf69d67d922f31aae1e61f298c168a4d435ee74d3475d2f3889f8578483860e5bc541de6bfdf74cc95fb35c6f47a8b591eeb0fd007e32a273d895330a5c12d518a03bcb640bed7a5e860826dbdc6e208a608b1899ccda1d44ee87c0fa4d265fd65479a895f6ba2e5f187a4ea1d0f981318f40b76ee0596f5ad2566f2b15812d32130d5d28f0783eea5bd19c7c51851a27b09d339f15ecdbee2106a4e32db461b97e777d7c90346a09ec3ba8d074e59945ed8d019999752c34fbd1cd68caee94ff9012539a31c768bb35417a12d8682cde00a360f24d7ee6ea93416b77de767dd7a6f1dad61f3fcbe5597cccb1a9f5c71291669e07578eacd86abf0e845707d21674ca3e7551dbdd843cbdb7d4c07d6f8be51cce938262e8fd9f0c502ad1dfbba393caec1851bacb912cbc2f28ff742bdfc568a8526e3c8fc1fb0adc45b0594cb1c3b75c32f4a80fb5073c5e5ba5c92f7816c34cd65ae3db1f3e025022f800803394ddd60fd827ce3b8fa7dcdb95b716980fee1a3ca2f897fa84c266e4f2a366c09d53cab4cfa78c9a551721242c490ac7f12b0d1c0e27e2277dbbecbbf81b35a00e4b5e2c6fb630ed0b7faf5612c8249f95bd7a1c76041bb481aca368c887a25f1362067191e51f48bb3f0ed3fefc0db571d12c98fd53d7e99774eb0d8fd46953d1fcc89eb41a4bab046cf3948bb3756c8decb1c6dd16578fda0fb7af59ca76c401e54a547a0e3430678e6cac3840924cdd19db6955ffc69137aa4d9cd152694f0d03e79c9631012fc2c26e80631ea1294afe37bcc7a842865ae57bf25578997e39241dba4222af4b26ab74c7a561aeca03fbc8b2f8b019ea6abf89d22f73e05f11dfe991739e6a79c8eaebd5942d43ced54d65c04475d53ee0ea52b7f42dec03565152964b5b1ee1ebb4fae760de84aaec564d8d3c74cff4aconsolehelper../share/redhat-config-cluster/configure/cluster-config.py../share/redhat-config-cluster/convert/cluster-convert.py../share/redhat-config-cluster/redhat-config-cluster.py../share/redhat-config-cluster/configure/redhat-config-cluster-cmd.py../share/redhat-config-cluster/redhat-config-gfscluster.py../redhat-config-cluster.xpmrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootredhat-config-cluster-1.0.8-1.src.rpm"Lconfig(redhat-config-cluster)redhat-config-cluster@ JJ/sbin/chkconfig/usr/bin/pythonPyXMLclumanagerconfig(redhat-config-cluster)gnome-python2gnome-python2-canvaspygtk2pygtk2-libgladerhplrpmlib(CompressedFileNames)rpmlib(PayloadFilesHavePrefix)1.2.211.0.8-13.0.4-14.0-14.2.3C%BBBBAN@z@?@K@@@KG????Y???@?|K?e?`?_J?\?\?[V?[V?V?V?T?T?T?LՀ?H?BI???????;?9?7?2w?/Ԁ?/Ԁ? ??v?Ӏ? ? ?^?^?^?^?^?^?^>>>>>$>Ҁ>>>>;>;>>裀>R>]>>>>t>t>#>#>#>#>.>.>.>.>>>Ӌ>Ӌ>:>:>:>>>ˢ>Q>>>>>Ǯ>>>s>s>>->->>9>9>D>D>D>>P>P>> > > >>~>~>~> >>> >+>}>y>x>wB>wB>wB>u>t>p>p>n>gp>gp>f>b*>K>=@>-nJim Parsons 1.0.8-1.0Jim Parsons 1.0.7-1.0Jim Parsons 1.0.6-1.0Jim Parsons 1.0.5-1.0Jim Parsons 1.0.4-1.0Jim Parsons 1.0.2-2.1Jim Parsons 1.0.2-2.0Jim Parsons 1.0.2-1.96Jim Parsons 1.0.2-1.95Jim Parsons 1.0.2-1.91Jim Parsons 1.0.2-1.9bJim Parsons 1.0.2-1Jim Parsons 1.0.1-4.1Hardy Merrill 1.0.1-4Hardy Merrill 1.0.1-3Hardy Merrill 1.0.1-2Hardy Merrill 1.0.1-1Hardy Merrill 1.0.0-8Hardy Merrill 1.0.0-7Hardy Merrill 1.0.0-6Hardy Merrill 1.0.0-5Hardy Merrill 1.0.0-4Hardy Merrill 1.0.0-3Hardy Merrill 1.0.0-2Hardy Merrill 0.1.96-3Hardy Merrill 0.1.96-2Hardy Merrill 0.1.96-1Hardy Merrill 0.1.95-5Hardy Merrill 0.1.95-4Hardy Merrill 0.1.95-3Hardy Merrill 0.1.95-2Hardy Merrill 0.1.95-1Hardy Merrill 0.1.94-1Hardy Merrill 0.1.93-1Hardy Merrill 0.1.92-1Hardy Merrill 0.1.91-1Hardy Merrill 0.1.90-1Hardy Merrill 0.1.89-1Hardy Merrill 0.1.88-1Hardy Merrill 0.1.87-1Hardy Merrill 0.1.86-1Hardy Merrill 0.1.85-1Hardy Merrill 0.1.84-1Hardy Merrill 0.1.83-1Hardy Merrill 0.1.82-1Hardy Merrill 0.1.81-1Hardy Merrill 0.1.80-1Hardy Merrill 0.1.79-1Hardy Merrill 0.1.78-1Hardy Merrill 0.1.77-1Hardy Merrill 0.1.76-1Hardy Merrill 0.1.75-1Hardy Merrill 0.1.74-1Hardy Merrill 0.1.73-1Hardy Merrill 0.1.72-1Hardy Merrill 0.1.71-1Hardy Merrill 0.1.70-1Hardy Merrill 0.1.69-1Hardy Merrill 0.1.68-1Hardy Merrill 0.1.67-1Hardy Merrill 0.1.66-1Hardy Merrill 0.1.65-1Hardy Merrill 0.1.64-1Hardy Merrill 0.1.63-1Hardy Merrill 0.1.62-1Hardy Merrill 0.1.61-1Hardy Merrill 0.1.60-1Hardy Merrill 0.1.59-1Hardy Merrill 0.1.58-1Hardy Merrill 0.1.57-1Hardy Merrill 0.1.56-1Hardy Merrill 0.1.55-1Hardy Merrill 0.1.54-1Hardy Merrill 0.1.53-1Hardy Merrill 0.1.52-1Hardy Merrill 0.1.51-1Hardy Merrill 0.1.50-1Hardy Merrill 0.1.49-1Hardy Merrill 0.1.48-1Hardy Merrill 0.1.47-1Hardy Merrill 0.1.46-1Hardy Merrill 0.1.45-1Hardy Merrill 0.1.44-1Hardy Merrill 0.1.43-1Hardy Merrill 0.1.42-1Hardy Merrill 0.1.41-1Hardy Merrill 0.1.2-40Hardy Merrill 0.1.2-39Hardy Merrill 0.1.2-38Hardy Merrill 0.1.2-37Hardy Merrill 0.1.2-36Hardy Merrill 0.1.2-35Hardy Merrill 0.1.2-34Hardy Merrill 0.1.2-33Hardy Merrill 0.1.2-32Hardy Merrill 0.1.2-31Hardy Merrill 0.1.2-30Hardy Merrill 0.1.2-29Hardy Merrill 0.1.2-28Hardy Merrill 0.1.2-27Hardy Merrill 0.1.2-26Hardy Merrill 0.1.2-25Hardy Merrill 0.1.2-24Hardy Merrill 0.1.2-23Hardy Merrill 0.1.2-22Hardy Merrill 0.1.2-21Hardy Merrill 0.1.2-20Hardy Merrill 0.1.2-19Hardy Merrill 0.1.2-18Hardy Merrill 0.1.2-17Hardy Merrill 0.1.2-16Hardy Merrill 0.1.2-15Hardy Merrill 0.1.2-14Hardy Merrill 0.1.2-13Hardy Merrill 0.1.2-12Hardy Merrill 0.1.2-11Hardy Merrill 0.1.2-10Hardy Merrill 0.1.2-9Hardy Merrill 0.1.2-8Hardy Merrill 0.1.2-7Hardy Merrill 0.1.2-6Hardy Merrill 0.1.2-5Hardy Merrill 0.1.2-4Hardy Merrill 0.1.2-3Hardy Merrill 0.1.2-2Hardy Merrill 0.1.2-1Hardy Merrill 0.1.1-22Hardy Merrill 0.1.1-21Hardy Merrill 0.1.1-20Hardy Merrill 0.1.1-19Hardy Merrill 0.1.1-18Hardy Merrill 0.1.1-17Hardy Merrill 0.1.1-16Hardy Merrill 0.1.1-15Hardy Merrill 0.1.1-14Hardy Merrill 0.1.1-13Hardy Merrill 0.1.1-12Hardy Merrill 0.1.1-11Hardy Merrill 0.1.1-10Hardy Merrill 0.1.1-9Hardy Merrill 0.1.1-8Hardy Merrill 0.1.1-7Hardy Merrill 0.1.1-6Hardy Merrill 0.1.1-5Hardy Merrill 0.1.1-4Hardy Merrill 0.1.1-3Hardy Merrill 0.1.1-2Hardy Merrill 0.1.1-1- Fix for bz151081- added hard path to bindir due to bz134362- removed debug output- version bump- 1) added bladecenter, pap, and ipmilan 2) added monitor link box- Fixed bz #129997 incorrect localization domain issue. - Added code to implement fz #113895 max restarts field for services.- removed double quotes for heartbeat rate and allowed misses. - Corrected method call name for countMembers.- Added double quotes for new fence devices. - Fixed ugly white space bug in redhat-config-cluster.- Added support for three additional fence devices in gfs druid.- fixed bugs #120210 and #124580 - The DottedQuadToNum call in util_ipconvert now works on base64 arches. - GULM STONITH option is available for clusters with more than 2 members.- Added a new python executable script that launches a druid to be used for configuring GFS. The druid uses the existing cluster's cluster.xml as a starting point.- fixed bug #114920 - A busy/wait dialog now appears while a service is started, stopped, or migrated from one node to another.- fix bug #112933 - added PyXML to spec 'Requires:' line.- fix bug #110261: - changed cluster_functions_gui.py - added 2nd parameter "parent dialog" to both errorMessage and warningMessage subroutines - if passed in, the parent dialog is used in set_transient_for(parent) to ensure that the error or warning dialog is always on *top* of the parent dialog. - fixed daemonPropDialog.py: - added edit to function 'on_okbutton_clicked' - when 'Disk Tiebreaker - Disk Ping Interval' radiobutton is selected, don't allow a null or blank value for the ping interval. - changed calls to errorMessage and warningMessage to include self.dialog as the 2nd "parent dialog" parameter.- fix bug #110261 - Added edit to function 'on_okbutton_clicked' - when 'Network Tiebreaker - IP Address' radiobutton is selected, don't allow a null or blank value for the tiebreaker ip address.- fix bug #109958 - fixed util_ifconfig_module.py - problem was that 'ifconfig' in the French language produces different spelling for some words. util_ifconfig_module.py was looking for 'inet addr' and the French ifconfig output produces 'inet adr'. The fix is to preface '/sbin/ifconfig' with 'LC_ALL=C' - so now the ifconfig command that util_ifconfig_module.py executes is 'LC_ALL=C /sbin/ifconfig'.- rebuild with new release number.- cluquorumd_module.py - added function __ipInCluster which takes in an ip address, and returns an error message if that ip matches any cluster member name, or any service ip address, or localhost. Added a Tiebreaker IP edit that calls the new function - so we will now NOT allow a Tiebreaker IP to match any cluster member, nor any service ip address, nor localhost. - cluster-config.glade - in the daemonProperties dialog on the 'clumembd' tab, change the wording of the tiebreaker fields from: __ Ping Interval ______________ __ Tiebreaker IP ______________ to: __ Disk Tiebreaker - Disk Ping Interval __________ __ Network Tiebreaker - IP Address __________ - daemonPropDialog.py - changed wording in message displayed on 'clumembd' tab depending on the number of cluster members defined - changed 'Tiebreaker IP' to 'Network Tiebreaker IP Address'.- redhat-config-cluster.glade - change 'Configure' menu item in Cluster => Configure from Alt-C to Ctrl-C. Because 'Cluster' menu is invoked by Alt-C, Alt-C was just displaying the Cluster menu. So, since Alt-C is already used, I changed 'Configure' menu item to Ctrl-C - this(Ctrl) is also more consistent with other menu items. - cluster-config.glade - changed 'File' menu item 'Properties' from being a stock menu item (where Ctrl-P didn't work to invoke it) to being Stock menu item 'None' with Icon 'Properties' with Ctrl-C as the accelerator - now Ctrl-P does bring up Properties for the selected list item.- smbShareDruid.py - fixed bug 105732 - If an "Existing Service" was selected, don't automatically pre-select "Existing Device" - now count the number of devices that the selected service has. If there are no devices, then pre-select "New Device" instead. - fixed bug 106028 - added manpages for cluster-config and cluster-convert. - fixed bug 106232 - cluster status memberDialog was not displaying the Login value of a network powercontroller. Problem was the config file XML has 'user' instead of 'login' - changed memberDialog to look for 'user', and renamed screen column from 'Login' to 'User'. - created a "testing" subdirectory under redhat-config-cluster in CVS, and put new redhat-config-cluster_testplan.html in there. Also, moved redhat-config-cluster/src/configure /test files test_redhat-config-cluster-cmd (script that tests redhat-config-cluster-cmd) test_cluster.xml (test config file used by test_redhat-config-cluster-cmd) up into that new "testing" directory.- util_smbconf_module.py - commented out 'netbios name' additions made in 1.0.0-4, because new Samba package was created with a patch to fix bugzilla 104222. I left in functions __getHostName and __getNetbiosName - they just aren't used now.- util_smbconf_module.py - fixes to workaround bugzilla 104222 - Samba bug where 'nmbd -n [foo] ...' (done by clumanager when starting the samba service) does not work because the nmbd command is ignoring the -n option. So, these changes were made to add [global] option 'netbios name' as a workaround: 1. added global option 'netbios name'. 2. added function __getHostName, which calls gethostbyaddr. 3. added function __getNetbiosName, which grabs thei 1st ip address for the service, resolves it, and uses the 1st part of the dns address as the netbios name.- util_smbconf_module.py - fixed the 're.split' in __init__ so that it only splits on the first equal sign. I did this by adding 'maxsplit=1' to the split. - ReleaseNotes - added a note on service relocation - if the target member of a service relocation cannot start the service, and another member can, then the user will get no notification that the original target member coudn't start the service. But the logs on the original target member will reflect the error starting the service, and the logs on the member that actually started the service will reflect(log level 'notice') that it did start the service. - redhat-config-cluster-cmd.8 manpage - in CLUMEMBD 'interval' description, changed reference to a member from 'he' to 'it'.- redhat-config-cluster.py - fixed function 'populateServicesList' - 'owner' was coming up "()" for a service that is added to a running cluster - it comes up disabled and without an owner. So fixed 'owner' to be null("") if both getOwner() and getLastOwner() return null.- redhat-config-cluster.py - fixed function 'on_servicesEditButton_clicked' - problem was if a service was disabled when Cluster Status was invoked, and user double clicked that service to display Service Information, the Member displayed was always the first member in the list. Now fixed so that instead of always displaying the first member in the list, it will now properly display the 'last owner' of that disabled service.- change default loglevel of daemons clumembd, clulockd, cluquorumd, clurmtabd, and clusvcmgrd from 4(Warning) to 5(Notice). - changed 'clumembd' daemon default failover seconds (interval and tko_count) from 10 seconds (interval 500000, tko_count 20) to 15 seconds (interval 750000, tko_count 20)- redhat-config-cluster.py (Cluster Status): - added function 'getLastOwner' and fixed Cluster Status 'Services' display - for Disabled services, display the last owner in parenthesis. - for serviceDialog, fixed relationship between Member (owner) and service State (Enable/Disable) - when user changes State to 'Disable', Member now properly becomes unmodifiable. And, when State is 'Enable' and user changes Member to a different member, the Member now stays set to the new member, instead of indicating the first member in the member list.- nfsExportDruid.py - moved edit 'Export Directory must be underneath device mountpoint' up so that for a *new* device that edit is before the 'Device Mountpoint does not exist, but will be created when the service is started' edit.- cluster-config.py - fixed function 'check_shared_storage' - previously, check_shared_storage *always* checked shared storage by executing 'shutil -p /cluster/header'. This is a problem if you have a properly functioning cluster (good config file /etc/cluster.xml), and then you delete the config file and recreate the cluster - check_shared_storage will report success since shared storage was *previously* initialized with the old cluster configuration. So I added an 'if' - if the config file was NOT created, then check shared storage using 'shutil -p /cluster/header'. So with this new 'if', if the config file *WAS* just created, then that 'if' will fail, and execution will proceed in 'check_shared_storage' down to actually (re)initialize shared storage.- daemonPropDialog.py - changed Ping Interval / Failover time warning message to be more clear.- ReleaseNotes - added a Disk Tiebreaker restriction section - in a 3-node cluster using disk tiebreaker ('cluquorumd' option 'pinginterval'), when you delete one node leaving 2 nodes, you must restart the cluster software on the remaining nodes to ensure that the disk tiebreaker works properly - this is because the ping thread is spawned only at cluster startup.- serviceDialog.py, serviceIPAddressDialog.py, deviceDialog.py, nfsexportDialog.py, clientDialog.py - previously, when user clicked 'OK' in any of those service related scripts, the script would call validate, which would produce an error if the service was running, even if the user didn't change any values. With this fix, each script only calls validate now if at least one field value changed. - clumembd_module.py: - added constant MINIMUM_TKO_COUNT = 3 - added function failover_seconds_greater_than_min_disk_ping_seconds which returns success if failover seconds is greater than the minimum disk pinginterval (pinginterval * MINIMUM_TKO_COUNT) This was added because if the user is allowed to specify a disk pinginterval that when multiplied with the MINIMUM_TKO_COUNT is greater than or equal to the failover seconds, the cluster won't start properly, and a message will get logged. - ReleaseNotes - added a section describing the disk pinginterval and failover seconds relationship. That new section does say that this new edit does NOT exist for the command line tool redhat-config-cluster-cmd. - daemonPropDialog.py - in function 'on_okbutton_clicked' right after calling clumembd validate, add logic - if count members is 2 AND cluquorumd disk 'pinginterval' _is_ specified, then call clumembd function failover_seconds_greater_than_min_disk_ping_seconds if check fails (failover seconds is NOT greater than the minimum disk ping seconds) then display warning that allows the user to select a valid disk pinginterval value. - ClusterEntity.py - in function 'modify_options', which is only called by the command line tool redhat-config-cluster-cmd, instead of always calling 'setOptions', only call 'setOptions' if at least one option was passed in. This fixes the problem where a command line tool user gets the 'Service must be disabled before updates can be made', even if the user was just attempting to get a list of options for a tag and was not attempting to change any option values.- clumanager cluster code has been changed to create a device mountpoint if the mountpoint doesn't exist. So I changed config stuff to display a WARNING (instead of a fatal ERROR) when specified mountpoint doesn't exist. - device_mount_module.py - raise a WARNING (instead of a fatal ERROR) when mountpoint doesn't exist. And commented out edit requiring mountpoint to be a directory. - nfsExportDruid.py and smbShareDruid.py - needed to make same changes to these since they do not use device_mount_module.py. If mountpoint doesn't exist, display a WARNING (instead of an ERROR). Also comment out edit requiring mountpoint to be a directory.- fixed cluster-convert.py - a new apcmaster switch powercontroller required a new driver, so Lon wrote one and called it 'apcplus' in AS2.1. But that new powercontroller type will be called 'apcmaster', so I added code to cluster-convert.py to convert powerswitch type 'apcplus' to 'apcmaster'. - ReleaseNotes - removed section saying that redhat-config-cluster manpage is just a skeleton, since I've updated it recently. And added section about requirements for APC MasterSwitch powercontrollers.- updated redhat-config-cluster.8 manpage - was just a basic skeleton before. - updated redhat-config-cluster.py Usage function to say "See redhat-config-cluster(8) for more information."- command line (redhat-config-cluster-cmd.8) manpage - added Failover Domain Nodes section which described adding, changing the order of, and deleting nodes(members) of a failover domain.- fixed bug 102486 - these scripts contained strings that were unnecessarily flagged for translation, so they were fixed to NOT flag for translation: failoverdomain_module.py, util_smbconf_module.py, ClusterEntity.py, and daemonPropDialog.py.- fixed bug 102500 - redhat-config-cluster-cmd.py - fixed strings needing translation.- fixed bug 102488 - fixed split strings in sharedstate_module.py.- service_device_module.py - added new private function '__svc_already_has_sharename' to restrict users so that only 1 samba share name can be specified for a service. Since each samba share binds to the service IP address, it doesn't make sense for a service to contain more than one samba share device. - cluconfig_module.py - in __init__ after closing the newly created config file /etc/cluster.xml, but before parsing that file into self.dom, run 'clukey generate' command to generate a new cluster authentication key *and* put that new key into the cluster config file. - cluster_module.py - default option 'name' to 'Red Hat Clumanager Cluster'. - redhat-config-cluster-cmd.8 manpage - incorporated changes from John Ha, Lon, and myself.- cluster-config.py - changed function name from 'init_shared_storage' to 'check_shared_storage', and changed its logic from only init'ing shared storage if cluster config file /etc/cluster.xml was created, to executing command 'shutil -p /cluster/header' - if rc=0 then shared storage was previously initialized and is responding fine - if rc!=0 then shared storage was not initialized, so initialize it. - redhat-config-cluster-cmd.py: - added import of cluster_functions.py function getStatusOutput, and - logic at top previously only checked to see if the cluster config file /etc/cluster.xml was just created, and it was just created, it init'd shared storage. Changed this logic to now execute command 'shutil -p /cluster/header' - if rc=0 then shared storage was previously initialized and is responding fine - if rc!=0 then shared storage was NOT previously initialized, so initialize it. - fixed function 'modify_device' - contained logic to remove /etc/samba/smb.conf.[sharename] file if device sharename was removed. Commented this code out since decision was made previously to NOT remove previously created Samba config files, even when the device sharename is removed.- redhat-config-cluster-cmd.8 manpage - added section GENERAL_EXAMPLES containing an example of adding an NFS export directory service with 4 clients. - service_module.py - fixed a recently added Failover Domain edit that verifies that the submitted failover domain exists in the cluster. Testing revealed that when adding a service in the GUI that the failover domain is defaulted to 'None', and since 'None' doesn't exist as a failover domain in the cluster, that edit was failing. Fix is to disregard a service failover domain of 'None'.- redhat-config-cluster.py and cluster-config.py - fixed Help => Contents path to point at the new help files that John Ha created.- changed email addresses - replaced at-sign's with ' at '. tburke's request to stop spam. - redhat-config-cluster-cmd.8 - added sections SERVICE_IPADDRESS, DEVICE, and NFSEXPORT to the command line manpage. - nfsexport_module.py - fixed function export_dir_under_mountpoint to return FALSE(error) if device mountpoint is undefined. This fixes command line bug found where user allowed to add an nfs export directory to a device that didn't have a mountpoint defined.- service_module.py - if service option 'failoverdomain' is submitted, added logic to verify that the a failoverdomain exists in the cluster with that name - if not, then raise a FATAL error. This fixes a bug where the command line tool allowed the user to change a service 'failoverdomain' to a failoverdomain name that didn't exist in the cluster. - failoverdomains_module.py - in function 'failoverdomain_found' give default value of None to 'failoverdomain_being_validated' parameter.- member_module.py - check to ensure that member ip is in the same network as 'this' member, was only being done when a new member was being added. Fixed this to so that this check is done on an add and on an update. - redhat-config-cluster-cmd.py: - in function 'del_member', the try block assumed only 1 error could be raised, and so always produced the same error message. Actually, 2 different errors are possible - one if the specified member 'name' doesn't exist in the cluster, and the other if the 'name' is referenced by existing failover domain nodes. I fixed the try block to have each error produce a different error message. - same in function 'del_failoverdomain' - one error if failover domain doesn't exist in cluster, and a different error if the failover domain 'name' is referenced by existing services.- man/redhat-config-cluster-cmd.8 - added more to the command line tool manpage. Am now part way through describing failover domains. - memberDialog.py - existing logic in on_okbutton_clicked checks to see if member 'name' changed, and if it did change, then change all failover domain references to the old member name to the new member name. Commented out that logic since that logic was moved into new 'set' function in member_module.py. Did this because command line tool needs to do the same thing when a member name changes, so do it in one common place that both command line and gui can access it - in member_module.py. - failoverdomainDialog.py - existing logic in on_okbutton_clicked checks to see if failoverdomain 'name' changed, and if it did change, then change all service references to the old failover domain name to the new failover domain name. Commented out that logic since that logic was moved into new 'set' function in failoverdomain_module.py. Did this because command line tool needs to do the same thing when a failover domain name changes, so do it in one common place that both command line and gui can access it - in failoverdomain_module.py. - cluster-config.glade - fixed bug - serviceDialog had 'Editable' set to 'YES' for the failoverdomain widget, which allowed a user to enter a failoverdomain name that didn't exist. I changed the 'YES' to 'NO' so that the user must pick from the list of currently defined failoverdomains. - redhat-config-cluster-cmd.py - removed logic in function 'modify_failoverdomain' that determines if the failoverdomain 'name' changed, and if it did change then it called failoverdomain.change_failoverdomain_on_services with the old and new name. Removed that logic since that logic was incorporated into a newly added 'set' function in failoverdomain_module.py.- cluster-config.py: - moved shared state initialization out of function 'init_shared_storage' and into new cluster_functions.py function 'initialize_shared_state', and put a call to that new function in 'init_shared_storage'. - In function 'quit', if there *were* changes and user clicks 'No' (Exit without Saving), added logic to test if config file was created(first time). If it *was* created and user clicked 'No' (Exit without Saving), then remove the config file. - redhat-config-cluster-cmd.py - near the top, added logic to detect if the configuration file was created (by this run) - if it *was* created, then invoke new cluster_functions.py function 'initialize_shared_state'. Previously, shared state was NOT being initialized if this command line tool was run for the first time on a system (causing the configuration file to be created). - cluster_functions.py - added function 'initialize_shared_state' which initializes shared storage. If it fails, it raises the appropriate error using OptionError. If it fails to initialize 'raw' devices, then it parses the error message looking for a string that indicates that raw devices were not *created* - if it finds that string, it raises an error that instructs the user to follow the instructions in the manual for creating raw devices, and then try again.- redhat-config-cluster.py - fixed function on_enable_service - now get return code back from calling 'clusvcadm' to enable the service. If enabling the service failed, display an error message telling the user to check the logs, and instructing the user that a failed service must first be Disabled before it can be Enabled.- more added to manpage for redhat-config-cluster-cmd, but a lot still to go. - cluster-convert.py: - Lon fixed a 'powercontroller' issue - in testing, Lon discovered that network (1 network powercontroller for a 2-member cluster) powercontrollers were not converted properly - the code assumed 1 powercontroller per member. Lon fixed this. - added cluster option 'config_viewnumber="1"' - added clurmtabd option 'pollinterval="4"' if pollinterval option didn't exist in old cluster.conf. - 'mount' tag had option 'name' in old cluster.conf - convert 'name' to 'mountpoint' (write 'mountpoint' instead of 'name') - redhat-config-cluster.glade and redhat-config-cluster.py: - removed 'heartbeatDialog' from glade, and removed all the heartbeat code from redhat-config-cluster.py. This code was previously commented out, but because of a translation issue in the heartbeat glade file, I just removed the dialog and all related 'heartbeat' code. - updated the 'About' dialog to be more consistent with other redhat-config tools. - cluster-config.py - same 'About' dialog changes.- redhat-config-cluster.glade and redhat-config-cluster.py: - fixed icon column in members list and services list to NOT be sortable. Clicking on the icon column header before was causing a sort which caused python warnings. - fixed foreground color in members list - services list was previously fixed. Foreground color will either be 'red' if cluster down on member, or 'white' (default when not specified) when cluster up on member. Problem was that foreground color was either 'red' or 'black' - and 'black' is hard to read when the member is selected and had a navy blue background. - on serviceDialog (select service and click 'Properties') fix service 'Status' - change 'Start' to 'Enable' and 'Stop' to 'Disable', and fix it since it wasn't being properly populated before.- fixed redhat-config-cluster.py function on_contents_activate 'file' to be correct file name 'redhat-config-cluster.html'.- fixed VERSION in redhat-config-cluster.py and cluster-config.py.- checked docs/html/redhat-config-cluster.html in to CVS.- added Help menu item 'Contents' to redhat-config-cluster.py.- fixed cluster-config.py VERSION - was hardcoded.- added 'Contents' help for Cluster Configuration: - added 'docs/help' directory. - config-cluster.glade - added 'Contents' item to 'Help' menu. - config-cluster.py - added function on_contents_activate. - changed samba share snapshot logic so that servicesTreeview function 'saveAllShares' (called when user clicks 'File - Save') will now take in new argument 'device_share_dict_before', so now having both a *before* and an *after* picture of device samba share names, it can distinguish between samba share names that are new, changed, or deleted, and do the right thing for each. - config-cluster.py: - sambaSharesSnapshot global function - instead of building and returning a *list* of sharenames, build and return a dictionary whose key is device_name and value is share_name. this will enable us to tell which device samba shares are new, changed, or deleted, - updateSambaShareFiles function - when user removes the sharename from a device, do *NOT* remove the existing /etc/samba/smb.conf.[sharename] file. And now when calling servicesTreeview.saveAllShares, pass in self.device_share_dict_before. - servicesTreeview.py - function saveAllShares - now takes in new argument 'device_share_dict_before'. Logic now recognizes when sharename has been added, changed, and deleted, and does the right thing for each. - deviceDialog.py - added 'mountpoint' option to validate_ options dictionary right before calling self.check('device', validate_options). Did this so that device.validate(options) will have 'mountpoint' - if sharename is specified, mountpoint is required since /etc/samba/smb.conf.[sharename] has 'path' item that needs a valid mountpoint value. - service_device_module.py - in function 'validate', extract 'mountpoint' option from 'options', and remove it from 'options' - it's only coming in so that we can verify a mountpoint is present if the Samba Share Name is specified. If 'sharename' is specified, and a mountpoint was not specified and does not already exist as a 'mount' option in the XML, then raise a FATAL OptionError. - util_smbconf_module.py - instead of just initializing the device's samba share config dictionary to the default template in __init__ if an existing /etc/samba/smb.conf.[sharename] is not found, break out the 'default' template initialization into new function 'init_file_dict', so that it can be called to re-iniitialize the samba share config dictionary when the user removes the Samba Share Name from a device.- cluster_functions.py - in function 'hostInDNS', simply changed variable names to properly show what they contain: * changed name of arg coming in from 'ip' to 'ip_or_name', since gethostbyname takes in either a dns name or a dotted quad ip address. * changed 'name' to 'ip' since this holds the value returned from gethostbyname. - redhat-config-cluster-cmd.py - fixed function 'modify_powercontroller' to be able to properly recognize an ip address when given as a value in '--powercontroller=111.222.333.444', since powercontroller can be either *serial* (where arg will look like 'powercontroller=/dev/ttyS0') or *network* (where arg will look like '--powercontroller=111.222.333.444,5' where '5' is the port number on the powercontroller). - test_redhat-config-cluster-cmd - finished sections on member powercontrollers, service devices, nfsexports, and clients.- redhat-config-cluster.glade - on the Cluster Status screen, fixed the 'Services' section so that buttons (Enable, Disable, Restart, Properties) and column headings do NOT scroll.- service_device_module.py: - Added function '__no_mountpoint' that returns TRUE if the device has no 'mount' node at all ('except') or if the mount node exists but the mountpoint option is null - otherwise return FALSE. - Added edit that calls new '__no_mountpoint' function - if TRUE is returned, raise a FATAL error - since the /etc/smb.conf.[sharename] file contains a 'path =' option whose value must be a valid mountpoint, we are requiring that the device have a valid mountpoint defined before allowing a samba share name to be entered. (When the samba share name is entered, we create the /etc/smb.conf.[sharename] file.) - redhat-config-cluster-cmd.py - in function 'add_device', added code to call device.smbconf.writeSambaShareFile() if a non-null 'sharename' option was passed in. - test_redhat-config-cluster-cmd - updated and added 'Device' tests - mostly to properly test adding, changing, and deleting the device samba share name - to see if the /etc/samba/smb.conf.[sharename] file gets added, changed, or deleted properly.- smbShareDruid.y: - if existing device is selected, added code to figure out if sharename entered is a change from existing sharename - and build an appropriate message for the 'finish' screen. - added edit to function 'on_devicePage_next' - if user selects an existing device that already has a Samba Share Name, display an error dialog asking the user to select a different device. Since this edit prevents the user from *changing* a samba share name on an existing device, the code to build proper 'finish' text becomes unnecessary, but keep it anyway since this logic may change again in the near future to allow an existing sharename on an existing device to be changed via the smbShareDruid.py. - util_smbconf_module.py - fixed file header message text - to NOT be 2-member specific, and to NOT mention creating the sharename specific lock directory on the other "member", since that lock directory is now created and removed automatically by clumanager when the service is started/stopped.- service_device_module.py - when a sharename is specified, redhat-config-cluster will create the /etc/samba/smb.conf.[sharename] file - and one of the parameters in that file is 'interfaces' which must have a valid ip address value. So, I added an edit to service_device_module.py to raise a FATAL error if the device's service has *NO* ip addresses defined. - util_smbconf_module.py - added code to function 'writeSambaShareFile' to figure out 'action' (new, change, delete), and pass action back as 4th and final parameter to caller. Also, do *NOT* create smb.conf.[sharename] file if sharename specified is null, 'None', or 'none'.- servicesTreeview.py - function 'saveAllShares' had code that found the device mountpoint and service ip addresses and then passed those to smbconf.writeSambaShareFile. Moved that code into util_smbconf_module.py as new functions __getDeviceMountpoint and __getServiceIPAddresses. - util_smbconf_module.py - in __init__, add 'device' as new 1st parameter coming in. New functions __getDeviceMountpoint and __getServiceIPAddresses use 'device'. - redhat-config-cluster-cmd.py - in function 'modify_device', added section to update the samba share file if the samba share name changes. - service_device_module.py - when instantiate smbConf object in __init__, add new 1st parameter 'self'(device).- minor redhat-config-cluster-cmd (command line) test script fixes and minor error message wording fixes.- since we use network powerswitch 'servertech' for testing, I created constant ALLOW_NETWORK_SERVERTECH in member_powercontroller_module.py - set to TRUE for testing, and FALSE for production since we won't support 'servertech'. - Since powercontrollerDialog.py combo box lists are static, and come from constant lists in member_powercontroller_module.py, populate them once in the __init__. This fixes a bug where the network combo box list wasn't being populated when modifying an existing powercontroller and switching the powercontroller type from Serial to Network.- added option 'loglevel' to clumembd_module.py, and also to gui glade so that 'Log Level' now appears in 'clumembd' tab in the Daemon Properties dialog. - added call to 'ClusterEntity.genericOptionChecks' to each daemon module to ensure generic edits are done for each, which will make error messages consistent. - changed cluquorumd option 'pinginterval' default from no default to '2'.- redhat-config-cluster-cmd: - changed the order that major arguments are evaluated in to see which subroutine to invoke - moved 'service' arguments before 'failoverdomain' arguments, since 'service' arguments *can* include a 'failoverdomain' argument. - changed many error messages when problems deleting. - many small changes to test scripts and files.- redhat-config-cluster-cmd: - added function 'reorder_failoverdomainnodes' to reorder the id's on failoverdomainnode elements. Gaps will be caused when failoverdomains are deleted, so this function fills in the gaps by renumbering the id's starting at 0(zero) and incrementing each by 1. - call 'reorder_failoverdomainnodes' at end of function 'del_failoverdomainnode'. - fixed bug in function 'modify_failoverdomainnode' - old code wasn't considering a node 'order' change a real change, so when an 'order' change was specified, additionally the failoverdomainnode's 'out' function was called to print it out. The fix increments the ct_options_updated counter for an 'order' change so that the 'out' function is not called. - failoverdomain_module.py - fixed function 'get_failoverdomainnodes' by first sorting the nodes by 'id', then creating a list of those nodes (in the proper order) and returning that list. Problem was the gui was populating nodes in a domain by their relative position in the xml file - the fix is to sort the nodes by 'id' which ensures their correct order.- cluster-convert.py - add code to always convert the powercontroller 'type' to lower case. - smbShareDruid.py - added edit - don't allow spaces in sharename. Also changed text on 'finish' page so that text fits better in dialog. - sharedstateDialog.py - moved 'ALLOW_SFS' constant into sharedstate_module.py, so remove it as a global here, and add it to the sharedstate_module import statement. - redhat-config-cluster-cmd.py: - function modify_cluster - don't allow user to specify config_viewnumber option. - uncomment previously commented SFS code - whether or not SFS is acceptable is now governed by the 'ALLOW_SFS' constant is sharedstate_module.py. - test_redhat-config-cluster-cmd - added timing (elapsed time) so we know how long it takes to run this script. Also fixed these test sections: daemons, shared state, and started on members. - ClusterEntity.py - fixed function 'out' - added code to skip printing option if option_name is *NOT* found by self.node.hasAttribute(option_name). This allows options that are present(found by self.node.hasAttribute), but have a null("") value, to be printed with value ''. - member_powercontroller_module.py: - removed 'servertech' from VALID_NETWORK_TYPES. - fixed 'port' validation - fixed message if port validation fails. - docs/ReleaseNotes - removed the section saying that a conversion utility, to convert old /etc/cluster.conf configuration files to the new /etc/cluster.xml format, is not yet available - since it is now included (cluster-convert.py) and it does work.- for consistency, since Cluster Status screen was already changed, change '...Service xyz must be stopped...' to '...Service xyz must be disabled...' - changed 'stopped' to 'disabled'. - service_ipaddress_module.py - added 'netmask' edit - if netmask is submitted, run it through socket.inet_aton, and if a socket.error is raised, the netmask is invalid. Added same edit for broadcast. - updated test_redhat-config-cluster-cmd with lock logic - if cluster is running, or if Cluster Configuration app is running (and has config file /etc/cluster.xml locked) then print a message to stdout and exit.- util_lock_module - small change to error string when raising lockFileException - don't include 'and has file %s locked', since the file that is effectively being locked is /etc/cluster.xml and we were previously using self.lockfile_name which contained 'cluster.xml' without the /etc prefix. So the error string now says "Error: %s is already running under process %s, and has the configuration file locked". - ClusterEntity: 1. in function 'setOptions', put a 'try' block around 'self.validate(submitted_options)' to catch OptionError - if the severity of the error is WARNING, then 'pass' it. This function is only called by 'modify' and 'modify' is only invoked by the command line tool, so it allows the command line tool to succeed if just WARNING's are raised. 2. in function 'out', which is invoked by the command line tool to print the options for a specific tag, change the behavior for options with a null value. Old way was to NOT print the option if the value was null. New way is to print the option with a value of ''. - cluquorumd_module.py (and clurmtabd, clusvcmgrd, clulockd, clupowerd) - add FATAL error edits to ensure that the loglevel is a number in range 0-7 (0-EMERG, 7-DEBUG). This is necessary when loglevels are submitted via command line, as gui access to loglevels is provided by an Option Menu which only allows selection of 0-7. - cluster_module.py - comment out all references to option 'alias_ip'. - member_module.py - this fix ensures that the member 'name' is confirmed to be a valid ip address *before* calling ipconvert.ipIsInSameNetAsHost since that function raises a socket.error (really it is calling socket.inet_aton in function ipconvert.dottedQuadToNum that raises the socket.error) if given an invalid ipaddress. So just rearranged edits when 'name' is submitted - put hostInDNS check at top - invalid ip address will be caught by that check. - service_ipaddress_module.py - same basic fix as member_module.py. The ipaddress is already taken care of by the hostInDNS check. But added code if the netmask is submitted, to call socket.inet_aton(netmask) - that will raise socket.error if the netmask is invalid - if it is invalid, then raise a FATAL error - if it's valid, then continue on to eventually call ipconvert.ipIsInSameNetAsHost(ipaddress, netmask).- clumembd_module.py - in UPDATE_GETOPTS, added equals sign to multicast_ipaddress so that if specified, multicast_ipaddress must be specified *with* a value. - cluconfig_module.py - even though the 'clupowerd' tag has been removed from the configuration file, it was still being created as part of a default cluster configuration file the first time redhat-config-cluster is run on a system. To fix that, I commented out all references to 'clupowerd' in cluconfig_module.py.- renamed command line configuration tool from 'cluconfig' to 'redhat-config-cluster-cmd'.- redhat-config-cluster.glade: - changed 'Start Cluster Service' to 'Start Local Cluster Daemons', and same for 'Stop Cluster Service'. - changed text on service 'Start' and 'Stop' buttons to 'Enable' and 'Disable' - redhat-config-cluster.py and cluster-config.py: - changed 'About' dialog GPL text to "This software is licensed under the terms of the GPL." - added Tammy Fox to the 'About' dialog Documented By credits.- in nfsExportDruid.py, added 'Client Name' and 'Client Options' fields to NFS Export Directory page to allow user to enter 1 export directory and 1 client (with options) via the druid. Also fixed scrolling through the pages using the 'Prev' and 'Next' buttons.- integrated cluster conversion scripts to allow user to convert old /etc/cluster.conf to new /etc/cluster.xml configuration file. Created new 'convert' directory which contains cluster-convert.py and ConfCluster.py.- changed configure/cluster-config.glade and configure/daemonPropertiesDialog - changed Broadcast and Multicast from checkbuttons to radiobuttons in the same radiobutton group, to restrict selection to one or the other, but not both.- added Brian Stevens to 'About' 'Written By' tab - for Red Hat Cluster Manager.- fixed VERSION in redhat-config-cluster.py and cluster-config.py.- updated docs/ReleaseNotes: - version 0.1.47. - added Tim Burke and Kimberlite credit for clumanager to 'About' 'Written By' tab.- updated docs/ReleaseNotes: - version 0.1.46. - added comment that Samba Share name may not contain spaces. - added comment that a conversion utility will be available in future versions to allow the conversion of an old /etc/cluster.conf configuration file into a new /etc/cluster.xml file. - changed 'About' dialogs in redhat-config-cluster.py and configure/cluster-config.py - added Lon Hohberger as the Red Hat Cluster Manager 'Written By', and added Valerie Rodgers to the 'Documented By' tab.- updated docs/ReleaseNotes for 0.1.45.- on the daemonPropertiesDialog, changed the clumembd failover label from 'Failover Seconds' to 'Failover Speed'.- for both redhat-config-cluster.py and cluster-config.py, added code to create an 'About' dialog that includes the clumanager version - code executes 'clustat -v'. - added "Failover Seconds" label above the failover seconds slider in the clumembd tab in the daemon properties dialog. Moved the seconds indicator under the slider. - changed the clumembd default multicast ip address from 225.0.0.10 to 225.0.0.11.- changed FORMALNAME in redhat-config-cluster.py from 'Red Hat Cluster' to 'Red Hat Configure Cluster'. - fixed cluster-config.py VERSION - changed from hardcoded value to template 1.0.8.- changed version numbering scheme to be consistent with internally developed projects. - removed old commented out code and debugging prints. - changed cluster_functions.py function 'cluPing' to use getStatusOutput to execute the ping command. This fixes the problem of ping output being spewed to STDOUT.- added an edit to service_device_module.py to prevent users from putting spaces into device 'sharename's.- added new module configure/clusterpkg/clulockd_module.py, and added new 'clulockd' tab to daemonPropertiesDialog in glade - has Log Level only. - added multicast edit - require the multicast ip if the multicast checkbutton is checked.- require clumanager >= 1.1.56.- fixed bug in util_smbconf_module.py - when there is more than one service with shared(samba) devices, the 2nd samba service had a problem because it was trying to overwrite the pidfile. Added 'pid directory' as a global option in the /etc/samba/smb.conf.[sharename] file.- in ifConfig module function getAllInterfaceNames, change default of INCLUDE_LO to TRUE, so that ifconfig LO interface is included by default. This will allow a standalone test machine to specify 'localhost'.- changed 'multicast' configuration in daemonPropertiesDialog 'clumembd' daemon - now, multicast has a checkbutton, and a multicast ip address entry field. - when user tries to delete a service, service ip address, device, nfsexport, or nfsexport client, new code makes sure that parent service is stopped - if parent service is currently running, display an error dialog.- changed Configuration Status screen in glade to pop up in the center of the screen. - change smbShareDruid.py to customize the text that appears on the 'Finish' page based on the sharename entered. Also added text to warn the user to remember to copy the /etc/samba/smb.conf.[sharename] file to all other cluster members, and create the /var/cache/samba/[sharename] lock file on each of the other cluster members.- changed title of frame in glade for both addNFSDruidDialog and addSMBDruidDialog from 'Existing Service' to 'Existing Services with IP Addresses' to reflect a code change to only list existing services that *have* ip addresses. - added code to both nfsExportDruid.py and smbShareDruid.py to ensure that the device mountpoint entered for a new device exists on the filesystem, and is a directory. - fixed bug in util_ifconfig_module.py - regular expression to recognize the start of an interface section was incorrect - the pattern did not include a colon, so it didn't recognize that 'eth0:0' was a valid interface. Fixed this.- fixed cluster-config.py to re-populate the services treeview if the return code from the call to the add samba share druid shows a share was added. - added Service IP Address to the New Service frame of both the add NFS druid, and the add Samba druid. - fixed fields and navigation when user scrolls forward and backward through the add nfs export and add samba druids.- fixed bug 91336 - typo in specfile. - fixed memberDialog - member 'name' wasn't always getting focus when entering a new member, but now it is since I added a grab_focus() on the name widget. - changed cluStatApp in glade - made cluster name sensitive, but not editable, which displays the name on a white background. - fixed broken code in failoverdomainnodeDialog.py - changed '__modify' function to return 'rc' instead of returning nothing. That allows the 'add' function, which calls '__modify', to get back the dialog return code - if the return code is gtk.RESPONSE_CANCEL, then return an empty list. This fixes the problem where the user 1. adds a failover domain 2. clicks on 'Add Members' 3. on Add Members dialog, selects 1 or more members, and clicks OK 4. selected member(s) properly appear in failover domain 5. clicks on 'Add Members' again 6. on Add Members dialog, clicks 'Cancel' - the bug would cause the same previously selected member(s) to be listed *again* in the failover domain. This code fixes that bug.- deleted 'clupowerd' tab from daemon properties dialog, and commented all code that referenced clupowerd fields. - fixed nfsExportDruid.py: - moved initializing fields to 'run' function. - added edit that export directory name must begin with a slash. - in 'cluStat' class function 'serviceIsRunning', added a 'try' block around 'self.service_state[id]' to catch a KeyError that would be generated if nfsExportDruid is used twice in a row to add exports, and the 2nd one selects the service added by the 1st one - all before the user clicks 'Save' to save configuration changes.- in glade, changed - deviceOrServiceIPAddressDialog - title was being chopped off on the right, so gave it a default size. - bulkLoadNFSDialog - changed title to 'Bulk Load NFS', and set the GtkFileDialog tooltip to 'Select the NFS exports file to bulk load'.- in glade, changed failoverdomainDialog and failoverdomainnodeDialog - changed all display references from 'Node' to 'Member'.- in member_module.py, added import of 'ipConvert' from clusterpkg/util_ipconvert_module, and added a WARNING - if 'add', then raise a WARNING if the ip address of the member being added is NOT in the same network as the host that redhat-config-cluster is being run on.- added new dialogs addNFSDruidDialog and addSMBDruidDialog, and added nfsExportDruid.py and smbShareDruid.py. - cluster-config.py - added functions on_add_nfs_activate and on_add_samba_activate. - changed 'self.tree_view' references to 'self.treeview' - made this consistent throughout code. - commented out previous requirement that the nfs export directory submitted must exist on the filesystem - we will allow it to NOT exist. - significant changes in util_smbconf_module.py: - __init__ now takes in 'node' (a device node) - changed dictionary that stores contents of smb.conf.[sharename] file to be written out - changed 'sharename' key to the literal 'local'. - removed now unnecessary function 'changeSharename'.- added new 'failedNFSBulkLoadDialog' to display errors from the user attempting to bulk load an existing NFS exports file. Modified servicesTreeview.py to display this new dialog when there are NFS exports bulk load errors..- changed to new icons from Garrett LeSage. Also resized the redhat-config-cluster service detail screen - made the default larger.- enhanced cluster_functions.py class 'cluStat' __init__ to populate a service_status dictionary, and added cluStat function 'serviceIsRunning'. - added edit to service_module.py to ensure that the service is stopped before user is allowed to edit an existing service. - added edit to service_ipaddress_module.py to ensure that the service is stopped before user is allowed to add or edit a service ipaddress.- changed edit - was requiring at least 2 members to be defined before allow user to add a service. This has been changed to require at least 1 member to be defined before allowing user to add a service - because now a unicluster can run with just 1 member. - added new 'util_lock_module.py' to manage a lockfile - for the cluster it will create lock file /var/run/cluster.xml and will flock that file. This is primarily to prevent 2 instances of cluster-config.py from running at the same time.- changed names of the 'utility' modules: - from 'ifconfig_module.py' to 'util_ifconfig_module.py' - from 'ipconvert_module.py' to 'util_ipconvert_module.py' - from 'smbconf_module.py' to 'util_smbconf_module.py' - added new module 'util_df_module.py' that takes in a directory or filename path and creates a cluDF object. 'get' methods include get_path (one passed in), get_filesystem, get_blocks, get_used, get_available, get_percent_used, and get_mountpoint.- Changed cluster-config.glade sharedstateDialog - added an underlying vertical box to make spacing between 'raw' and 'sfs' possible, and removed the horizontal line between them. This is to make it easier to 'hide' the SFS fields when ALLOW_SFS is set to FALSE in sharedstateDialog.py. - created new cluster_functions.py function 'countMembers' which takes in a cluster configuration file xml node, and returns the count of all the currently defined cluster members. Changed existing code that needs to count members to call this new function. - added new edit to service_module.py - require there to be at least 2 members defined before user can add a service- redhat-config-cluster.py changed 'Cluster' menu items 'Start Cluster' to 'Start Cluster Service' and 'Stop Cluster' to 'Stop Cluster Service', to make it clear that the user is starting/stopping the cluster software just on the current member. - Changed cluster-config.glade daemonPropDialog loglevels - removed the old numeric spinbuttons, and replaced those with option menus so the user can see a word ("EMERG", "WARN", etc.) along with a short description to describe the log levels available.- changed daemon properties dialog - made Ping Interval and Tiebreaker IP a radiobutton group (select one or the other) and add code to populate that group based on the number of cluster members defined.- rebuild- Updated ReleaseNotes: - removed the section explaining that there are no edits in the Bulk Loading of NFS Exports, since now there are edits in place. - removed the section titled 'Service Device and Share (Samba) duplicates' that previously explained that there were no edits in place to prevent duplicate Device names and duplicate Samba share names - since now there ARE edits to prevent those dups. - added section 'Command Line Tool' to explain that the command line tool 'cluconfig' has *NOT* been kept up-to-date with changes occuring to the gui tool, and recommends against using this command line tool currently.- changed NFS export bulk load validation - instead of just confirming that each nfs export directory being bulk loaded is child of the device mountpoint, call 'validate' for each nfsexport so that all edits are done. - changed servicesTreeview message displayed when bulk load NFS exports failed.- added label to daemon properties dialog in glade so that we can display message 'Cluster is running - cannot change failover speed' on the 'clumembd' tab when the cluster is running. - added code to daemonPropDialog.py 'run' function to see if cluster is currently running - if it is, then on 'clumembd' tab display 'Cluster is running - cannot change failover speed' message, and disable the failover speed slider.- on gui device dialog in glade, changed 'Share Name' to 'Samba Share Name'. - on NFS export bulk load, added check to be sure that each export directory being loaded into the selected device is either equal to the device's mountpoint, or is underneath the device's mountpoint. If any fail that check on the bulk load, then an error dialog is displayed that lists all the exports that failed.- added validation to check for duplicate * device name (device special file name) * samba share name * device mountpoint throughout the whole cluster - meaning all services and devices. - added state 'Failed' to redhat-config-cluster.py class Service stateTable array. - enhanced nfsexport directory validation: * make sure nfsexport directory name starts with a slash. * added function __export_dir_under_mountpoint to validate that nfsexport directory is either equal to the device mountpoint, or is underneath the device mountpoint.- fixed smbconf_module.py - when writing smb.conf.[sharename] file, wasn't writing header for sections other than standard 'global' and 'sharename'. Now it does. - removed text in docs/ReleaseNotes explaining that manual changes made to an smb.conf.[sharename] file might be lost if the sharename was changed. This is no longer the case - changes will NOT be lost if the sharename changes, so I removed that text.- removed debugging prints.- massive changes to the way that smb.conf.[sharename] files are created and maintained.- rebuild- added comments to docs/ReleaseNotes: Service Device and Share(Samba) duplicates: - No edits in place to prevent the same device(Ex: /dev/hda1) from being entered more than once within the cluster. - No edits in place to prevent the same Samba share name from being entered more than once within the cluster. Samba Share Configuration Files: - Code now exists within redhat-config-cluster to create, update, and delete the samba share configuration files for cluster services that specify samba shares. NOTE: Currently, if the user changes a samba share name in redhat-config-cluster, the samba configuration file corresponding to the "old" share name will be deleted, and a new 'default' /etc/samba/smb.conf.[newsharename] samba configuration file will be created for the new share name. The important point to consider here is that changes manually made (outside of redhat-config-cluster) to the samba share configuration file with the "old" share name may be lost.- added configure/clusterpkg/smbconf_module.py to encapsulate adding, updating, and deleting /etc/samba/smb.conf.[sharename] files that correspond to cluster services that have samba shares. - added code to configure/cluster-config.py: a. add 'from clusterpkg.smbconf_module import smbConf' b. added global function 'sambaSharesSnapshot' - called in __init__ for a 'before' snapshot of samba shares in the cluster, and again in 'on_save_activate' for the 'after' snapshot. This function returns a dictionary with primary key being sharename, and secondary keys being Samba share attributes being maintained in the cluster. c. added global function 'changedSambaShare' which takes in a 'before' dictionary for a share, and an 'after' dictionary for that same share - it compares the before and after and returns TRUE if any of the share attributes changed, and FALSE if no attributes changed. d. added global function 'updateSambaShareFiles' which takes in a 'before' and 'after' dictionary for all shares in the cluster. It determines what shares have been added, changed, and deleted. If a share was added, it invokes smbConf.addSambaShareFile to create the /etc/samba/smb.conf.[sharename] file. If a share was changed, it invokes smbConf.modifySambaShareFile to change the existing /etc/samba/smb.conf.[sharename] file. If a share was deleted, it invokes smbConf.deleteSambaShareFile to delete the /etc/samba/smb.conf.[sharename] file. - fixed code in configure/clusterpkg/service_module.py - fixed 'userscript' check - value might be 'None' or null('') - added the null part.- changed all externally visible (and some internal) references from 'Node' to 'Member'. - changed clumembd defaults for options 'interval' and 'tko_count' to be consistent with 10 second failover, instead of 30 second failover that they were before. - previously, powercontrollerDialog.py function 'delete' did not return any indication of delete success or failure. So changed 'delete' to return TRUE on delete success, or FALSE on delete failure. - cluster-config.py: a. Deleted initSharedStorageDialog from glade, and instead added code to create 'gtk.MESSAGE_QUESTION' dialog to function init_shared_storage. b. Changed dialog name from 'quitDataChangedDialog' to 'quitSaveChangesDialog'. c. Changed buttons on 'quitSaveChangesDialog' from Quit/Cancel/Save to No, Cancel, Yes - and changed text of message. - service_module.py: a. add_service_ipaddress - if 'service_ipaddresses' tag doesn't exist, then add it first - then add new 'service_ipaddress' tag. b. get_service_ipaddresses - if 'service_ipaddresses' tag doesn't exist, then just return an empty list, instead of abending.- redhat-config-cluster.glade - changed 'servicePreferredNodeEntry' to 'serviceFailoverDomainEntry'. - redhat-config-cluster.py: - changed references from service 'Network' to service 'IPAddress'. - fixed class 'Service' method getIPAddresses - was looking for 'network' nodes, and I changed it to a. look for 'service_ipaddresses' node, and then b. look for 'service_ipaddress' nodes inside 'service_ipaddresses'. - Changed all 'clusvcadm' calls to surround the service name %s with single quotes. This fixes the problem where the user enters a service name that contains spaces - need to quote the service name being passed to clusvcadm.- changed 'cluadmin' to 'clusvcadm'. - removed 'session' tag from test_cluster.xml.- restructured most of the GUI dialogs, to fix a problem whereby error and warning dialogs were popping up more than once: - 'on_okbutton_clicked' - get 'rc' based on validate and error or warning dialog, and at the end execute 'self.dialog.response(rc)'. - 'run' - connect buttons at start, and disconnect at end. - 'hide' - remove disconnects - these were moved to 'run' end. - '__modify' - hide at the end of while loop. 'continue' if rc equals gtk.RESPONSE_REJECT. - redhat-config-cluster.py: - added 'Device' column to memberDialog powercontrollers list. - fixed function getScript - changed option name from 'userScript' to 'userscript'. - fixed function getFailoverDomain - changed option name from 'failover_domain' to 'failoverdomain'. - daemonPropDialog.py - added 'Tiebreaker IP Address'. - powercontrollerDialog.py - added 'port' as a 'Serial' powercontroller option. - membersTreeview: Switched 'delete' function back to the way it was before - need to call 'item.delete()' first, and only if that call returns success do you then want to remove the 'iter' from the model (to remove the member from the tree). - removed 'Alias IP' as a Cluster tag option.- fixed GUI message 'Unable to initialize graphical environment...'. - added function 'cluStat' to cluster_functions.py cluStat executes '/usr/sbin/clustat -x' and saves the output. It provides methods getXML, getDOM, and clusterIsRunning. - changed redhat-config-cluster.py function updateList to create a cluStat object, and call the cluStat methods to get cluster status info.- Updated spec file - require clumanager >= 1.1.34. - Updated ReleaseNotes - add notes about Shared State 'Shared Raw Device' being the only currently selectable option, and about Shared State initialization needing work.- Updated (slightly) the redhat-config-cluster man page. - Added a 'cluconfig' man page. - Added 'ReleaseNotes' to the docs directory. - In redhat-config-cluster.py for service restart, changed from doing cluadmin -d(disable) and -e(enable) to doing -R(restart). This is because 'enable' actually looks to see which node *should* start the service, whereas in a restart situation, you really want the *same* node to start the service. So the new -R(restart) doesn't check to see which node should start the service - it will simply restart the service on the same node.- Internationalized strings. - Removed old commented-out code and debug prints. - Added cluster_functions.py function getStatusOutput which executes the command you give it, and returns the status(return code) and commands text output. Changed things like 'service clumanager start' from using os.system to using getStatusOutput, mostly to control more closely the text that gets displayed in the run window. - Added 'Current Node: blah' to redhat-config-cluster.py - to the right of 'Status:' (cluster status).- In redhat-config-cluster.py function 'updateList', change to *always* invoke populateServicesList() and populateMembersList() so that members and services listed always have the right status. Previously, those functions were only called when the cluster was "Up", which meant that the lists were inaccurate when the cluster was "Down".- Added function getStatusOutput to cluster_functions.py, which executes the command it's given, and returns the status and output of the command. - Fixed redhat-config-cluster.py 'quit' logic - if initializing Shared Storage fails, then give more descriptive error message, and return to the app.- Removed unused import 'from socket import gethostbyname' from several scripts. - Removed daemonPropDialog 'Stability' slider, which allowed the user to change values for options 'strict' and 'adaptive'. These Config utilities will not give access to those options, so clumanager will default to strict=yes and adaptive=yes. - Changed member logic - used to verify with 'ping' that member is online. Changed this logic to instead use 'gethostbyname' to verify that member is defined in DNS. - Changed member logic to prevent adding dupicate member to cluster from: just checking member 'name' entered to: translating member 'name' entered using gethostbyname into the ip address, and testing the ip address against all other member's ip addresses to see if a dup exists. - When start cluster(in redhat-config-cluster.py), changed algorithm for calculating number of seconds to wait for cluster to come up to be interval * tko_count / 1000000 * 3. If cluster not fully up by the end of that time, then error.- Work by Dan Walsh to enable user to bulk load nfs exports from an existing nfs 'exports' file into a selected service 'device'. New files include nfsBackend.py, nfsData.py, and sharedfilesystem.py.- Changed messages on a few warning dialogs to be more clear. - Added check to cluster-config.py 'quit' - if no members defined for cluster, display new noMembersDialog dialog (warning). - In clusterpkg/cluconfig_module.py changed references from 'cluster' to 'clumanager'.- Changed notebook tabs - changed 'Failover Domains' from 3rd tab to 2nd, and changed 'Services' tab from 2nd to 3rd. - After start the cluster from being stopped, fixed calculation of seconds to sleep before making sure cluster is up. - Implemented actual commands to start/stop/restart services.- Created new gui dialog initSharedStateDialog, and added code to gui config-cluster.py 'quit' to detect when the cluster config file has been created (for the 1st time) - if it has just been created, then display initSharedStateDialog to tell user and ask if user wants to initialize Shared State.- Fixed cluster_functions.py function 'cluPing' - do os.system to execute ping command and check the return code, instead of old method of doing os.popen to execute ping command, grab the output, and search for a success string. Searching for a success string won't work with internationalization.- More Shared State fixes. Also added Shared State tests to cluconfig command line tests.- Fixed Shared State(clusterpkg/sharedstate_module.py and cluconfig) so that it works with both command line and gui.- Added capability to start and stop the cluster. - Fixed the cluster configuration 'quit' logic, so that if data has changed, a dialog is displayed and works properly for letting the user Save the changed data.- Integrated cluster status. redhat-config-cluster initially shows cluster and service status, and 'Cluster' pulldown menu option 'Configure' takes you to the Cluster Configuration app located in the 'configure' subdirectory.- On the 'cluster' tag, changed 'timestamp' option to 'config_viewnumber'. Increment config_viewnumber when save config changes.- Fixes to make sharedstate work properly.- If user exits without saving changes, display a warning dialog. - Fixed import problem, and so was able to implement these checks: * when changing a Failover Domain *name*, be sure to change that Failover Domain Name on all existing Services that specify the old name. * when deleting a Failover Domain, don't allow delete if any existing Services specify that Failover Domain. * when changing a Member *name*, be sure to change that Member Name on all existing Failover Domains that specify the old name. * when deleting a Member, don't allow delete if any existing Failover Domains specify that Member name.- Got Failover Domains working.- Added Failover Domains.- Changes from calling 'validate' once for each option in each base class to calling 'validate' once for each base class.- Initial copydolly.build.redhat.com 1125691975ƞ¸„…†‰}CCCCCC C C C C CCCCCCCCCCCCCCCCC¹º»¼½¾CƖBƘƜ[_Cas|vxwG .D,   + !$%# ")&'*(/01>@?=2367A59-C:4;8<BBBBHJINLMEOFKcsdadeesfrisitjakonoptrusvtrzhzh1.0.8-11.0.8-1 redhat-config-clusterredhat-config-clusterredhat-config-clustercluster-configcluster-convertredhat-config-clusterredhat-config-cluster-cmdredhat-config-gfsclusterredhat-config-cluster.desktopredhat-config-cluster-1.0.8COPYINGReleaseNotesch-admin-overview.htmlch1-software-overview.htmlcluster-config.htmlfigsadd-device.pngadd-service.pngaddfailoverdn.pngcluconfig-save.pngcluconfig-start.pngcluconfig.pngcludaemons-config.pngclulockd.pngclumembd.pngcluquorumd.pngclurmtabd.pngclustatus.pngcluster-config.pngcluster-status.pngclusterstarted.pngclusterstopped.pngclusvcmgrd.pngconfig-service.pngdeletemember.pngfailoverdn.pngflowchart1.pngnewmember.pngpwr-ctrl-config.pngrhlogo.pngshared-state.pngsharedinit.pngindex.htmllegalnotice.htmlpt-clustat.htmlpt-rhccluster.htmlrhdocs-man.csss1-add-delete-member.htmls1-add-service.htmls1-admin-backup.htmls1-admin-disable.htmls1-admin-log.htmls1-admin-modify.htmls1-admin-name.htmls1-admin-start.htmls1-clustatus-bugzilla.htmls1-config-clulockd.htmls1-config-clumembd.htmls1-config-cluquorumd.htmls1-config-clurmtabd.htmls1-config-clusvcmgrd.htmls1-config-daemons.htmls1-config-failover-domain.htmls1-config-powercontroller.htmls1-rhcc-bugzilla.htmls1-software-rawdevices.htmlstylesheet-imagescaution.pngimportant.pngnote.pngtip.pngwarning.pngredhat-config-cluster.moredhat-config-cluster.moredhat-config-cluster.moredhat-config-cluster.moredhat-config-cluster.moredhat-config-cluster.moredhat-config-cluster.moredhat-config-cluster.moredhat-config-cluster.moredhat-config-cluster.moredhat-config-cluster.moredhat-config-cluster.moredhat-config-cluster.moredhat-config-cluster.moredhat-config-cluster.moredhat-config-cluster.mocluster-config.8.gzcluster-convert.8.gzredhat-config-cluster-cmd.8.gzredhat-config-cluster.8.gzredhat-config-clusterForkedCommand.pyconfigureclientDialog.pycluster-config.gladecluster-config.pyclusterpkgClusterEntity.pyClusterList.py__init__.pycluconfig_module.pyclulockd_module.pyclumembd_module.pyclupowerd_module.pycluquorumd_module.pyclurmtabd_module.pycluster_functions.pycluster_functions_gui.pycluster_module.pyclusvcmgrd_module.pydevice_mount_module.pyfailoverdomain_module.pyfailoverdomainnode_module.pyfailoverdomains_module.pymember_module.pymember_powercontroller_module.pymembers_module.pynfsexport_client_module.pynfsexport_module.pyservice_device_module.pyservice_ipaddress_module.pyservice_ipaddresses_module.pyservice_module.pyservices_module.pysharedstate_module.pyutil_df_module.pyutil_ifconfig_module.pyutil_ipconvert_module.pyutil_lock_module.pyutil_smbconf_module.pydaemonPropDialog.pydeviceDialog.pydeviceOrServiceIPAddressDialog.pyfailoverdomainDialog.pyfailoverdomainnodeDialog.pyfailoverdomainnodesListview.pyfailoverdomainsListview.pymemberDialog.pymembersTreeview.pynfsBackend.pynfsData.pynfsExportDruid.pynfsexportDialog.pypowercontrollerDialog.pyredhat-config-cluster-cmd.pyredhat-config-cluster.xpmserviceDialog.pyserviceIPAddressDialog.pyservicesTreeview.pysharedfilesystem.pysharedstateDialog.pysmbShareDruid.pyconvertConfCluster.pycluster-convert.pydevice.pngdown.pngexport_nfs.pnggfsdruid.gladenode_up.pngredhat-config-cluster.gladeredhat-config-cluster.pyredhat-config-cluster.xpmredhat-config-gfscluster.pyup.png/etc/pam.d//etc/security/console.apps//usr/bin//usr/sbin//usr/share/applications//usr/share/doc//usr/share/doc/redhat-config-cluster-1.0.8//usr/share/doc/redhat-config-cluster-1.0.8/figs//usr/share/doc/redhat-config-cluster-1.0.8/stylesheet-images//usr/share/locale/cs/LC_MESSAGES//usr/share/locale/da/LC_MESSAGES//usr/share/locale/de/LC_MESSAGES//usr/share/locale/es/LC_MESSAGES//usr/share/locale/fr/LC_MESSAGES//usr/share/locale/is/LC_MESSAGES//usr/share/locale/it/LC_MESSAGES//usr/share/locale/ja/LC_MESSAGES//usr/share/locale/ko/LC_MESSAGES//usr/share/locale/no/LC_MESSAGES//usr/share/locale/pt/LC_MESSAGES//usr/share/locale/ru/LC_MESSAGES//usr/share/locale/sv/LC_MESSAGES//usr/share/locale/tr/LC_MESSAGES//usr/share/locale/zh_CN/LC_MESSAGES//usr/share/locale/zh_TW/LC_MESSAGES//usr/share/man/man8//usr/share//usr/share/redhat-config-cluster//usr/share/redhat-config-cluster/configure//usr/share/redhat-config-cluster/configure/clusterpkg//usr/share/redhat-config-cluster/convert/-O2 -g -pipe -march=i386 -mcpu=i686cpiogzip9noarchnoarch-redhat-linux-gnu    ASCII C program textASCII C++ program textASCII English textASCII Java program textASCII textHTML document textPNG image data, 206 x 306, 8-bit/color RGBA, non-interlacedPNG image data, 24 x 24, 8-bit/color RGBA, non-interlacedPNG image data, 253 x 106, 8-bit/color RGBA, non-interlacedPNG image data, 284 x 160, 8-bit/color RGBA, non-interlacedPNG image data, 286 x 96, 8-bit/color RGBA, non-interlacedPNG image data, 290 x 210, 8-bit/color RGBA, non-interlacedPNG image data, 295 x 120, 8-bit/color RGBA, non-interlacedPNG image data, 298 x 284, 8-bit/color RGBA, non-interlacedPNG image data, 301 x 116, 8-bit/color RGBA, non-interlacedPNG image data, 32 x 32, 8-bit colormap, non-interlacedPNG image data, 34 x 34, 8-bit/color RGBA, non-interlacedPNG image data, 356 x 308, 8-bit/color RGBA, non-interlacedPNG image data, 356 x 406, 8-bit/color RGBA, non-interlacedPNG image data, 36 x 36, 8-bit/color RGBA, non-interlacedPNG image data, 363 x 265, 8-bit/color RGBA, non-interlacedPNG image data, 404 x 110, 8-bit/color RGBA, non-interlacedPNG image data, 413 x 116, 8-bit/color RGBA, non-interlacedPNG image data, 417 x 290, 8-bit/color RGB, non-interlacedPNG image data, 504 x 506, 8-bit/color RGBA, non-interlacedPNG image data, 506 x 506, 8-bit/color RGBA, non-interlacedPaul Falstad's zsh script text executableX pixmap image textXML document textdirectoryRRRRR=