From mboxrd@z Thu Jan 1 00:00:00 1970 From: rmccabe@sourceware.org Date: 20 Aug 2007 16:23:28 -0000 Subject: [Cluster-devel] conga ./clustermon.spec.in.in ./conga.spec.in. ... Message-ID: <20070820162328.310.qmail@sourceware.org> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit CVSROOT: /cvs/cluster Module name: conga Branch: RHEL5 Changes by: rmccabe at sourceware.org 2007-08-20 16:23:28 Modified files: . : clustermon.spec.in.in conga.spec.in.in ricci/modules/cluster: Clusvcadm.cpp Log message: fix bz253341: failure to start cluster service which had been modifed for correction Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/conga/clustermon.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.18.2.23&r2=1.18.2.24 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.56&r2=1.45.2.57 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/cluster/Clusvcadm.cpp.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.7.2.5&r2=1.7.2.6 --- conga/clustermon.spec.in.in 2007/08/13 19:06:01 1.18.2.23 +++ conga/clustermon.spec.in.in 2007/08/20 16:23:27 1.18.2.24 @@ -193,6 +193,10 @@ %changelog +* Mon Aug 20 2007 Ryan McCabe 0.10.0-5 +- Fixed bz253341 (failure to start cluster service which had been modifed for correction) +- Resolves: bz253341 + * Wed Aug 08 2007 Ryan McCabe 0.10.0-4 - Fixed bz230451 (fence_xvm.key file is not automatically created. Should have a least a default) - Resolves: bz230451 --- conga/conga.spec.in.in 2007/08/17 20:26:31 1.45.2.56 +++ conga/conga.spec.in.in 2007/08/20 16:23:27 1.45.2.57 @@ -310,8 +310,10 @@ ### changelog ### %changelog -* Fri Aug 17 2007 Ryan McCabe 0.10.0-5 -* Fixed bz249291 (delete node task fails to do all items listed in the help document) +* Mon Aug 20 2007 Ryan McCabe 0.10.0-5 +- Fixed bz249291 (delete node task fails to do all items listed in the help document) +- Fixed bz253341 (failure to start cluster service which had been modifed for correction) +- Related: bz253341 - Resolves: bz249291 * Mon Aug 13 2007 Ryan McCabe 0.10.0-4 --- conga/ricci/modules/cluster/Clusvcadm.cpp 2007/03/12 03:45:57 1.7.2.5 +++ conga/ricci/modules/cluster/Clusvcadm.cpp 2007/08/20 16:23:28 1.7.2.6 @@ -1,5 +1,5 @@ /* - Copyright Red Hat, Inc. 2005 + Copyright Red Hat, Inc. 2005-2007 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the @@ -89,7 +89,7 @@ if (*iter == nodename) node_found = true; if (!node_found && nodename.size()) - throw String("node unable to run services"); + throw String("Node " + nodename + " is unable to run cluster services. Check whether the rgmanager service is running"); // start for (list::const_iterator iter = services.begin(); @@ -100,10 +100,20 @@ if (iter->status == ServiceStatus::RG_STATE_MIGRATE) throw String(servicename + " is in the process of being migrated"); - - if (iter->status == ServiceStatus::RG_STATE_STOPPED || + + /* + ** Failed services must be disabled before they can be + ** started again. + */ + if (iter->status == ServiceStatus::RG_STATE_FAILED) { + try { + Clusvcadm::stop(servicename); + } catch ( ... ) { + throw String("Unable to disable failed service " + servicename + " before starting it"); + } + flag = "-e"; + } else if (iter->status == ServiceStatus::RG_STATE_STOPPED || iter->status == ServiceStatus::RG_STATE_STOPPING || - iter->status == ServiceStatus::RG_STATE_FAILED || iter->status == ServiceStatus::RG_STATE_ERROR || iter->status == ServiceStatus::RG_STATE_DISABLED) flag = "-e"; @@ -127,12 +137,12 @@ if (utils::execute(CLUSVCADM_TOOL_PATH, args, out, err, status, false)) throw command_not_found_error_msg(CLUSVCADM_TOOL_PATH); if (status != 0) - throw String("clusvcadm failed"); + throw String("clusvcadm failed to start " + servicename); } return; } - throw String("no such service"); + throw String(servicename + ": no such cluster service"); } void @@ -150,7 +160,7 @@ if (*iter == nodename) node_found = true; if (!node_found && nodename.size()) - throw String("node unable to run services"); + throw String("Node " + nodename + " is unable to run cluster services. Check whether the rgmanager service is running"); // start for (list::const_iterator iter = services.begin(); @@ -162,9 +172,16 @@ String flag; if (iter->status == ServiceStatus::RG_STATE_MIGRATE) throw String(servicename + " is already in the process of being migrated"); - if (iter->status == ServiceStatus::RG_STATE_STOPPED || + + if (iter->status == ServiceStatus::RG_STATE_FAILED) { + try { + Clusvcadm::stop(servicename); + } catch ( ... ) { + throw String("Unable to disable failed service " + servicename + " before starting it"); + } + flag = "-e"; + } else if (iter->status == ServiceStatus::RG_STATE_STOPPED || iter->status == ServiceStatus::RG_STATE_STOPPING || - iter->status == ServiceStatus::RG_STATE_FAILED || iter->status == ServiceStatus::RG_STATE_ERROR || iter->status == ServiceStatus::RG_STATE_DISABLED) flag = "-e"; @@ -185,13 +202,13 @@ if (utils::execute(CLUSVCADM_TOOL_PATH, args, out, err, status, false)) throw command_not_found_error_msg(CLUSVCADM_TOOL_PATH); if (status != 0) - throw String("clusvcadm failed"); + throw String("clusvcadm failed to migrate " + servicename); } return; } } - throw String("no such virtual service"); + throw String(servicename + ": no such virtual machine service"); } void @@ -206,6 +223,7 @@ iter++) if (iter->name == servicename) { if (iter->status == ServiceStatus::RG_STATE_STARTING || + iter->status == ServiceStatus::RG_STATE_FAILED || iter->status == ServiceStatus::RG_STATE_STARTED) { String out, err; int status; @@ -218,12 +236,12 @@ if (utils::execute(CLUSVCADM_TOOL_PATH, args, out, err, status, false)) throw command_not_found_error_msg(CLUSVCADM_TOOL_PATH); if (status != 0) - throw String("clusvcadm failed"); + throw String("clusvcadm failed to stop " + servicename); } return; } - throw String("no such service"); + throw String(servicename + ": no such cluster service"); } void @@ -243,9 +261,15 @@ if (iter->status == ServiceStatus::RG_STATE_STARTING) throw String(servicename + " is in the process of being started"); - if (iter->status == ServiceStatus::RG_STATE_STOPPED || + if (iter->status == ServiceStatus::RG_STATE_FAILED) { + try { + Clusvcadm::stop(servicename); + } catch ( ... ) { + throw String("Unable to disable failed service " + servicename + " before starting it"); + } + flag = "-e"; + } else if (iter->status == ServiceStatus::RG_STATE_STOPPED || iter->status == ServiceStatus::RG_STATE_STOPPING || - iter->status == ServiceStatus::RG_STATE_FAILED || iter->status == ServiceStatus::RG_STATE_ERROR || iter->status == ServiceStatus::RG_STATE_DISABLED) flag = "-e"; @@ -264,12 +288,12 @@ if (utils::execute(CLUSVCADM_TOOL_PATH, args, out, err, status, false)) throw command_not_found_error_msg(CLUSVCADM_TOOL_PATH); if (status != 0) - throw String("clusvcadm failed"); + throw String("clusvcadm failed to restart cluster service " + servicename); } return; } - throw String("no such service"); + throw String(servicename + ": no such cluster service"); }