# changelog

author: Lon Hohberger <lhh at redhat.com> 1.2.35
changelog:
  - Fix checking of is_nfs_service in svclib_filesystem
  - Fix bugzillas: 208995 209384 211238 211311 211312 224427 226789


author: Lon Hohberger <lhh at redhat.com> 1.2.33.2
changelog:
  - Wait for all child processes to exit prior to allowing clusvcmgrd
  to exit (#194491); original patch from Josef Whiter


author: Lon Hohberger <lhh at redhat.com> 1.2.32
changelog:
  - Add patch from Josef Whiter to make negative max_restart values
  cause immediate relocation w/o restart
  - Bump revision


author: Lon Hohberger <lhh at redhat.com> 1.2.31.3
changelog:
  - Add patch to make services relocate if max_restarts < 0
  - Add patch to make quotaon be called if usrquota / grpquota is
  one of the mount options for a given file system


author: Lon Hohberger <lhh at redhat.com> 1.2.31
changelog:
  - Send last breath during clean shutdown to speed up membership
  transition
  - If locking fails (e.g. quorum lost during shutdown or lock 
  master not responding), use unclean mode for the remaining services
  - When stopping servics uncleanly, stop all, not just the ones we
  think we owned


author: Lon Hohberger <lhh at redhat.com> 1.2.30
changelog:
  - Ensure device-ID ordering is not unsorted by svclib_filesystem
  - Provide (hopefully) helpful information to users on clusters
  which are inquorate in clustat output.
  - Update cluforce/clustat man pages for clarity


author: Lon Hohberger <lhh at redhat.com> 1.2.28.6
changelog:
  - Add local messaging to increase locking performance (#172894)
  - Fix locking hang (#172893) causing infinite timeout-loop errors
  - Prevent segfault when doing ops with services locked (#172735)
  - Retry during unlock phase to prevent FAULT() if a connection fails.
  (#172894, #168665)
  - Use lsof -bn so we don't block on gethostbyname() if DNS is down
  during force unmount (#171637)
  - Fix erroneous reclaim messages from clulockd


author: Lon Hohberger <lhh at redhat.com> 1.2.28
changelog:
  - Add option to disable ARP checking on inbound connections
  - Add option to use iproute (netlink-based) utilities to work around
  bugs related to certain NICS when used in conjunction with ethernet
  channel bonding.


author: Lon Hohberger <lhh at redhat.com> 1.2.24.1
changelog:
  - Add support for IPMI over LAN for Tiger systems (uses ipmitool)
  - Add support for IBM Blade Center
  - Make link-monitoring (#144488) a configurable option with cludb.


author: Lon Hohberger <lhh at redhat.com> 1.2.24
changelog:
  - Fix bonding patch from #144488
  - Fix argument processing in svclib_log
  - Include requirement for "iproute" in the spec file


author: Lon Hohberger <lhh at redhat.com> 1.2.23
changelog:
  - Fail-over services on disconnect of network link (#144488)
  - Unlink stonith config files after use (#134735)
  - Add support for Bull NovaScale fame/pap STONITH
  - Fix signal-blocking passed to child (#143867)
  - Retry when we get bogus info back from raw reads of service blocks.
  (#120934)
  - Zero out *all* of the ping packet (#135098)
  - Fix no default case in init script (#134995)
  - Handle other waitpid() return values (#137406)


author: Lon Hohberger <lhh at redhat.com> 1.2.20
changelog:
  - Synchronize max restarts/falsestarts with redhat-config-cluster
  - Add primary_only to cludb man page.


author: Lon Hohberger <lhh at redhat.com> 1.2.19pre1
changelog:
  - Make shutil -i store /etc/cluster.xml
  - Don't start if we can't determine our member ID.
  - Support sparse id elements in services (#113080)


author: Lon Hohberger <lhh at redhat.com> 1.2.18-pre2
changelog:
  - Implement max_restarts and max_false_starts service constraints
  to prevent endless cycling on failures on a given node.


author: Lon Hohberger <lhh at redhat.com> 1.2.18-pre1
changelog:
  - Misc changes to make IPv4 TB behave better.
  - Display a message at DEBUG if getting ARP info for an IP fails.
  - Add 'ICMP_ECHO' as a valid response.
  - Fix for double-resource alloc in corner case (#131754)
  - Fix for lsof hang if other NFS file systems are mounted (#131235)


author: Lon Hohberger <lhh at redhat.com> 1.2.15
changelog:
  - Allow loss of quorum in clean-exit cases w/o STONITH devices
  - Make clusvcmgrd relocate services it can't run b/c of RFD


author: Lon Hohberger <lhh at redhat.com> 1.2.9
changelog:
  - Retry in the case of slowly-responding lock daemon (fixes services
  not failing over when high-node cable pulled in 2-member cluster)
  - Never try to start services on members in the 'uncertain'
  state.
  - Change 'PANIC' to 'uncertain'; as 'PANIC' causes panic and
  confusion between cluster & kernel issues.


author: Lon Hohberger <lhh at redhat.com> 1.2.7
changelog:
  - Man page fix.
  - Lock race condition fix preventing failover after unplugging
  shared storage from a member.


author: Lon Hohberger <lhh at redhat.com> 1.2.5
changelog:
  - Fix for split-brain at startup when disk-tiebreaker is in
  use and intra-cluster communication fails.  Also adds checks
  for IP address + disk devices (to make sure they're still
  configured/mounted).


author: Lon Hohberger <lhh at redhat.com> 1.2.4
changelog:
  - Make loss of IP-tie-breaker a defined action.  Don't start
  the disk thread if the IP tie breaker is in use.


author: Lon Hohberger <lhh at redhat.com> 1.1.81
changelog:
  - Raw I/O fixes.  Gettimeofday() reliance removed (where it would
  cause problems previously).  Fixed daemon monitoring.  Fixed
  APC MasterSwitch driver.


author: Lon Hohberger <lhh at redhat.com> 1.1.79-1
changelog:
  - Misc fixes.  Challenge-response auth added (to avoid
  obvious security hole).  2-member/disk-tiebreaker fixes.


author: Lon Hohberger <lhh at redhat.com> 1.1.71-1
changelog:
  - Addition of a cluster-wide service shutdown script, useful
  for preparing large clusters (>2 nodes) for a total cluster outage.


author: Lon Hohberger <lhh at redhat.com> 1.1.67-1
changelog:
  - Remove /var/run/samba/<share> and /var/cache/samba/<share> on
  disabling a Samba service
  - Minor pool cleanups.


author: Lon Hohberger <lhh at redhat.com> 1.1.66-1
changelog:
  - Lock directory cleanups/fixes.
  - Include example service scripts in the RPM.
  - File descriptor cleanups.


author: Lon Hohberger <lhh at redhat.com> 1.1.63-1
changelog:
  - Fix for STONITH devices requesing "login" for power switches
  when they should have been requesting "user"


author: Lon Hohberger <lhh at redhat.com> 1.1.60-1
changelog:
  - clumanager.spec.in cleanup
  - Fix for services shown as running when all of the members in its
  restricted domain have crashed.


author: Lon Hohberger <lhh at redhat.com> 1.1.59-1
changelog:
  - Fix for #92012 - errors when updating RPM when /etc/cluster.xml
  nonexistent.  Disabled auto-editing of /etc/syslog.conf.


author: Lon Hohberger <lhh at redhat.com> 1.1.56-1
changelog:
  - Fixup for service manager handling quick transitions.  Multicast
  config changes.  WTI power switch enhancement.


author: Lon Hohberger <lhh at redhat.com> 1.1.52-1
changelog:
  - Allow MAC address authentication for cluster members when their IP
  is hijacked by a service IP address.  Minor cleanups, beautification.


author: Lon Hohberger <lhh at redhat.com> 1.1.51-1
changelog:
  - Periodic power switch checking of neighbor's power switch, reintegration
  of disk tie-breaker.  Misc. bugfixes, lock split-brain fix.


author: Lon Hohberger <lhh at redhat.com> 1.1.46-1
changelog:
  - Import to current CVS version.  NFS clurmtabd reintegration.
  Lock fixes, cleanups, Doxygen additions.  See ChangeLog.


author: Lon Hohberger <lhh at redhat.com> 1.1.16-1
changelog:
  - Change to support PANICed nodes - nodes which we failed
    to fence/power-cycle.  Fixed build problem preventing librhcm
    from getting installed properly.


author: Lon Hohberger <lhh at redhat.com> 1.2.36.1
changelog:
  - Fix clulockd bug where it could accept connections from 
  nodes it thought were offline (#427577)
  - Make timeouts more sane in the case of several quick transitions
  (#427577)


author: Lon Hohberger <lhh at redhat.com> 1.2.36
changelog:
  - Fix 333001 - crash during shutdown due to invalid fd
  - Fix last-breath processing.
  - Fix 360541 - membership transition handling if membership
    transitions before quorum daemon


author: Lon Hohberger <lhh@redhat.com> 0.7.9-1
changelog:
  - Force sending of last heartbeat before shutdown of backup
  so that the master re-arps the VIPs (#134007)


author: Philip Copeland <bryce@redhat.com>
changelog:
  - Fixed up piranha-passwd (#60440)
  - Updated the LVS-HOWTO docs (#60204)
  - fixed the silly misname of a directory in the httpd.conf (#60529)


author: Philip Copeland <bryce@redhat.com>
changelog:
  - pulled in Wensong's memory leak patchs
  - Dropped the shared scsi portion in the web interface
    Note: FOS will vanish in piranha 0.7.0's interface, in
    theory that functionality will be taken over by clumanager
    which is part of the advanced server offering.
    In the future clumanager/piranha will merge (so I'm told)


author: Philip Copeland <bryce@redhat.com>
changelog:
  - send_arp,c, changed the
    sock=socket(AF_INET,SOCK_RAW,htons(ETH_P_RARP));
    back to
    sock=socket(AF_INET,SOCK_PACKET,htons(ETH_P_RARP));
    as I got reports that this wasn't working.
    It will work fine, just there will be noise that it's
    an obsolete interface


author: Philip Copeland <bryce@redhat.com>
changelog:
  - Finally someone spotted the reason why the children don't die
    much happiness spread by Sebastien <sebastien.bonnet@experian.fr>
  - Added in additional patch from Sebastien for bugzilla #57654
    which I think is also a solution for #15911


author: Philip Copeland <bryce@redhat.com>
changelog:
  - Added in a patch I got from pzb for to be a good deal more sensible
    about how we detect if we're using FOS mode or LVS mode other than looking
    for a start or stop script (shudder)


author: Philip Copeland <bryce@redhat.com>
changelog:
  - Merged in Wensongs quiesce server patch for nanny
  - Updated the web interface to also know about the quiesce option


author: Philip Copeland <bryce@redhat.com>
changelog:
  - Merged in a patch for nanny.c from Wensong <wensong@gnuchina.org>
    which cleans up the run() function by splitting out two new
    funcions, adjustWeight(), and checkState().
  - I thought I'd removed the portion in the Makefile that tweaks with
    /etc/httpd/conf/httpd.conf but it was still there when I looked.
    Removed it.


author: Philip Copeland <bryce@redhat.com>
changelog:
  - control.php3 has for ages been calling /usr/sbin/ipvsadm.
    Unfortunately that changed to /sbin and was not updated
    https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=56497
  - In the pulse.c code, too few elements were allocated
    for the arguments causeing an occasional segv.


author: Philip Copeland <bryce@redhat.com>
changelog:
  - Added in a switchover for fos (virt/real address swapover
    to prevent the fos call to nanny checking the real IP
    instead of the VIP


author: Philip Copeland <bryce@redhat.com>
changelog:
  - Bundled in some very simple template scripts with the
    documentation. Dropped in an example_script with the
    main dist. Bumped the version number (0.6.0-10)


author: Philip Copeland <bryce@redhat.com>
changelog:
  - Removed nasty httpd.conf modifications in the
    rpm spec file. (An artifact of the old install
    system)
  - Dropped in an example script for use with the
    send_program function. Probably need to spend a
    week cooking up a library of 'common' scripts
    for use.


author: Philip Copeland <bryce@redhat.com>
changelog:
  - Fixed parse.php3 so that it wouldn't issue the persistance option
    twice in the lvs.cf configuration file


author: Philip Copeland <bryce@redhat.com>
changelog:
  - Various tidyups/rpm fiddling in an effort to allow for building standalone
    outside of the buildsystem.


author: Philip Copeland <bryce@redhat.com>
changelog:
  - Humm, killed off the piranha.desktop file as the GUI is web based not X11
    and this makes no sense to try and start from a menu item. A bookmark maybe.


author: Philip Copeland <bryce@redhat.com>
changelog:
  - Directives from der Boss, we must be able to run rpm -V successfully
  - Collapsed piranha piranha-gui piranha-docs into a single rpm


author: Philip Copeland <bryce@redhat.com>
changelog:
  - Made fast changes to the hard coded /usr/sbin/ipvsadm
    to be /sbin/ipvsadm. This should be in a define in a header file
    however because of time pressure I'm doing it this way first and
    fix it up next week.


author: Keith Barrett <kbarrett@redhat.com>
changelog:
  - Corrected netmask logic so it does not ref gethost call and is only
    used when value is non-zero.
  - Added netmask error code and return string
  - Fixed pulse's use of netmasks in ifconfig and sendarp calls
  - Put missing "if debug" blocks around debug output
  - If using FOS, assume active if no backup node specified in lvs.cf
  - Correct inconsistent use of --test-start, --nofork, --nodaemon, and
    --norun between pulse, nanny, fos, and lvs. Updated man pages too.
  - Removed ipvsadm build from Makefile
  - piranha requires ipvsadm 1.17+
  - parser now handles trailing \r chars (customer problem)


author: Keith Barrett <kbarrett@redhat.com>
changelog:
  - Fixed piranha-gui startup script and piranha spec file
  - Fixed gui error screen to report correct file permission & ownership


author: Keith Barrett <kbarrett@redhat.com>
changelog:
  - Removed ipvsadm inclusion in piranha RPM
  - Changed version to exceed last experiemental release
  - Corrected web reference in spec file
  - Cleaned up 7.x installationin spec and makefile
  - Bumped version (multiple times)


author: Keith Barrett <kbarrett@redhat.com>
changelog:
  - Merged Bryce's ipvsadm changes
  - Changed nobody to apache (if apache user apache exists)
  - Migrate existing lvs.cf file if appropriate
  - bumped version


author: Keith Barrett <kbarrett@redhat.com>
changelog:
  - Backed out some patches to pulse.c, fos.c, lvs.c, and nanny.c
  - Updated documentation
  - Changed "take control" heartbeat


author: Philip Copeland <copeland@redhat.com>
changelog:
  - removed the 'accept' input button in control.php3 to
    better fit the documentation
  - Updated the lvserror.php3 to reflect another not so uncommon
    fault that may prevent correct running of the GUI
  - Tidied up some eyecandy


author: Philip Copeland <copeland@redhat.com>
changelog:
  - Fixed an incorrect pag redirection in the failover pages
  - added two missing subnet masks to the peristance netmask field


author: Philip Copeland <copeland@redhat.com>
changelog:
  - modified the piranha.spec.in file and Makefile to allow for
    release number updates (from editing the Makefile)
  - fixed a bug in redundancy.php3 which occurs when no lvs.cf file
    is present
  - made ipvsadm popt change (minor patch which shouldn't affect
    native redhat installed systems)


author: Philip Copeland <copeland@redhat.com>
changelog:
  - core item ipvsadm has been updated to use ipvs-0.9.12-2.2.14
  - Minor tweeking of directory scruture
  - gui files no longer included in rpm builds
  - added a load of patches from the bugzilla archives
  - made kernel diffs
  - made sure the rpms built and installed correctly


author: Mike Wangsmo <wanger@redhat.com>
changelog:
  - changed the password updating/setting policy.  Made all password actions
    root operations via a root owned shell tool (piranha-passwd)


author: Philip Copeland <copeland@redhat.com>
changelog:
  - Security exposure raised by ISS regarding the passwd.php3
    file fixed by replacing the external call to htpasswd with
    php3s own crypt function (see parse.php3 change_password)
  - Rebuilt packages and generated errata.


author: Mike Wangsmo <wanger@redhat.com>
changelog:
  - removed killapache
  - changed sample httpd shutdown to use proper init scripts
  - Keith fixed MORONIC spelling error in pulse.c :)
  - moved the GUI README into the %doc list


author: Keith Barrett <kbarrett@redhat.com>
changelog:
  - Improved take control heartbeat login in pulse
  - Enhanced old GUI README to notify user of special conditions
  - Bumped version


author: Mike Wangsmo <wanger@redhat.com>
changelog:
  - added fos to file list
  - moved apache & php requires to gui package
  - reordered the install of killapache to make strip not puke


author: Keith Barrett <kbarrett@redhat.com>
changelog:
  - Corrected signaling, heartbeat, and failover in pulse
  - Bumped version to reflect a stable release
  - Note: pulse USR1/2 disabled in this checkin


author: Keith Barrett <kbarrett@redhat.com>
changelog:
  - Corrected memory errors in parser
  - Updated fos
  - Improved (but have not finished) pulse changes
  - Bumped version to reflect parser change


author: Philip Copeland <copeland@redhat.com>
changelog:
  - Added password services to web control
  - Altered pulse to provide a signal escalator between nobody root
    as we now have a "use a uid/gid < 100" limitation that
    apache's suexec doesn't cater for
  - Added default password to web (null)
  - minor spec file changes


author: Keith Barrett <kbarrett@redhat.com>
changelog:
  - New version of pulse with enhanced signals
  - New service = xxx parameter in config system
  - New man pages and doc updates


author: Mike Wangsmo <wanger@redhat.com>
changelog:
  - *NO* "echo's" in spec files!
  - made /etc/lvs.cf a %config so it'll get backed up on upgrades
  - cleaned up some useradd/groupadd errors


author: Keith Barrett <kbarrett@redhat.com>
changelog:
  - Fixed passthrough of routing type options
  - Fixed man pages to reflect routing type options
  - Changed formatting of sample.cf file and included comments
  - Bumped version number


author: Keith Barrett <kbarrett@redhat.com>
changelog:
  - Fixed segfault problem in nanny
  - Minor changes reporting the phase out of the old GUI
  - Bumped version number
  - Changed spec file to include web in GUI RPM


author: Keith Barrett <kbarrett@redhat.com>
changelog:
  - Bumped version to reflect Bryce's changes to install scripts
  - Added persistent netmask to lvsconfig and lvs and sample.cf


author: Keith Barrett <kbarrett@redhat.com>
changelog:
  - Added send/expect parsing to lvs, lvsconfig, and nanny.
  - Updated nanny man page and sample.cf file


author: Philip Copeland <copeland@redhat.com>
changelog:
  - Added NAT/direct routing/tunneling to the web interface
  - fixed up the web documents to tell the web browsers that
    caching them would be a BAD idea
  - Added some prettify stuff


author: Keith Barrett <kbarrett@redhat.com>
changelog:
  - Changed pulse call to send_arp to /usr/sbin
  - Suppress sock error on unconfigured tunl device
  - Bumped version


author: Nalin Dahyabhai <nalin@redhat.com>
changelog:
  - check that RPM_BUILD_ROOT != / when installing
  - handle case if httpd not installed during %install
  - handle gzipped man pages


author: Keith Barrett <kbarrett@redhat.com>
changelog:
  - Minor updates to doc files and man pages.
  - Added headers and history to some source files
  - Created nanny.h file


author: Mike Wangsmo <wanger@redhat.com>
changelog:
  - added a send_arp tool to the package
  - removed the /etc/lvs.cf entry (it was dumb here)
  - strip all binaries too
  - added nanny to package


author: Mike Wangsmo <wanger@redhat.com>
changelog:
  - restructured the package to come from CVS
  - renamed it
  - added oot's lvs daemon
  - added the perl client_monitor tool from Lars Marowsky-Bree
  - put stubs in for the GUI
  - buffed up the Makefile


author: Jim Parsons <jparsons@redhat.com> 1.0.2-2.1
changelog:
  - Fixed bz #129997 incorrect localization domain issue.
    - Added code to implement fz #113895 max restarts field for services.


author: Jim Parsons <jparsons@redhat.com> 1.0.2-2.0
changelog:
  - removed double quotes for heartbeat rate and allowed misses.
    - Corrected method call name for countMembers.


author: Jim Parsons <jparsons@redhat.com> 1.0.2-1.96
changelog:
  - Added double quotes for new fence devices.
    - Fixed ugly white space bug in redhat-config-cluster.


author: Jim Parsons <jparsons@redhat.com> 1.0.2-1.91
changelog:
  - 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.


author: Jim Parsons <jparsons@redhat.com> 1.0.2-1.9b
changelog:
  - 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.


author: Jim Parsons <jparsons@redhat.com> 1.0.2-1
changelog:
  - fixed bug #114920
      - A busy/wait dialog now appears while a service is started,
        stopped, or migrated from one node to another.


author: Hardy Merrill <hmerrill@redhat.com> 1.0.1-4
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 1.0.1-3
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 1.0.1-2
changelog:
  - 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'.


author: Hardy Merrill <hmerrill@redhat.com> 1.0.0-8
changelog:
  - 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'.


author: Hardy Merrill <hmerrill@redhat.com> 1.0.0-7
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 1.0.0-6
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 1.0.0-5
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 1.0.0-4
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 1.0.0-3
changelog:
  - 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'.


author: Hardy Merrill <hmerrill@redhat.com> 1.0.0-2
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.96-3
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.96-2
changelog:
  - 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)


author: Hardy Merrill <hmerrill@redhat.com> 0.1.96-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.95-5
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.95-4
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.95-2
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.95-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.94-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.93-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.92-1
changelog:
  - 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."


author: Hardy Merrill <hmerrill@redhat.com> 0.1.91-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.90-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.87-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.86-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.85-1
changelog:
  - 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'.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.84-1
changelog:
  - redhat-config-cluster.py and cluster-config.py - fixed
      Help => Contents path to point at the new help files that
      John Ha created.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.83-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.82-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.81-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.80-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.79-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.78-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.77-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.76-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.75-1
changelog:
  - fixed redhat-config-cluster.py function on_contents_activate
      'file' to be correct file name 'redhat-config-cluster.html'.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.70-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.69-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.68-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.67-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.66-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.65-1
changelog:
  - 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'.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.64-1
changelog:
  - 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).


author: Hardy Merrill <hmerrill@redhat.com> 0.1.63-1
changelog:
  - minor redhat-config-cluster-cmd (command line) test
      script fixes and minor error message wording fixes.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.62-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.61-1
changelog:
  - 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'.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.60-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.59-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.58-1
changelog:
  - 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 '<null>'.
    - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.57-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.56-1
changelog:
  - 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
           '<null>'.
    - 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).


author: Hardy Merrill <hmerrill@redhat.com> 0.1.55-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.53-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.52-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.51-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.50-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.47-1
changelog:
  - updated docs/ReleaseNotes:
       - version 0.1.47.
       - added Tim Burke and Kimberlite credit for clumanager
         to 'About' 'Written By' tab.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.46-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.44-1
changelog:
  - on the daemonPropertiesDialog, changed the clumembd
      failover label from 'Failover Seconds' to 'Failover
      Speed'.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.43-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.42-1
changelog:
  - 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.7.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.41-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-40
changelog:
  - added an edit to service_device_module.py to prevent
      users from putting spaces into device 'sharename's.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-39
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-37
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-36
changelog:
  - 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'.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-35
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-34
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-33
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-32
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-31
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-30
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-29
changelog:
  - 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'.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-28
changelog:
  - in glade, changed failoverdomainDialog and
      failoverdomainnodeDialog - changed all display
      references from 'Node' to 'Member'.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-27
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-26
changelog:
  - 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'.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-25
changelog:
  - 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..


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-24
changelog:
  - changed to new icons from Garrett LeSage.  Also resized the
      redhat-config-cluster service detail screen - made the default
      larger.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-23
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-22
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-21
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-20
changelog:
  - 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


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-19
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-18
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-16
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-15
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-14
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-13
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-12
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-11
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-7
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-6
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-5
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-4
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-2
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.2-1
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.1-22
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.1-21
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.1-20
changelog:
  - 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).


author: Hardy Merrill <hmerrill@redhat.com> 0.1.1-19
changelog:
  - 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".


author: Hardy Merrill <hmerrill@redhat.com> 0.1.1-18
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.1-17
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.1-16
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.1-15
changelog:
  - 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'.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.1-14
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.1-13
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.1-12
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.1-10
changelog:
  - Fixed Shared State(clusterpkg/sharedstate_module.py and cluconfig)
      so that it works with both command line and gui.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.1-9
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.1-8
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.1-7
changelog:
  - On the 'cluster' tag, changed 'timestamp' option to 'config_viewnumber'.
      Increment config_viewnumber when save config changes.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.1-5
changelog:
  - 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.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.1-2
changelog:
  - Changes from calling 'validate' once for each option in each base
      class to calling 'validate' once for each base class.


author: Hardy Merrill <hmerrill@redhat.com> 0.1.42-1
changelog:
  - 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.


