[Cluster-devel] conga luci/site/luci/Extensions/LuciClusterAct ...
rmccabe at sourceware.org
rmccabe at sourceware.org
Mon Aug 20 16:27:23 UTC 2007
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL4
Changes by: rmccabe at sourceware.org 2007-08-20 16:27:22
Modified files:
luci/site/luci/Extensions: LuciClusterActions.py LuciDB.py
LuciZope.py
luci/storage : form-macros
ricci/modules/cluster: Clusvcadm.cpp
Log message:
Fixes from the -RHEL5 branch
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterActions.py.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.4.2.1&r2=1.4.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciDB.py.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.6.2.1&r2=1.6.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciZope.py.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.4.2.1&r2=1.4.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/storage/form-macros.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.20.2.1&r2=1.20.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/cluster/Clusvcadm.cpp.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.8.2.4&r2=1.8.2.5
--- conga/luci/site/luci/Extensions/LuciClusterActions.py 2007/08/09 21:35:19 1.4.2.1
+++ conga/luci/site/luci/Extensions/LuciClusterActions.py 2007/08/20 16:27:21 1.4.2.2
@@ -364,6 +364,10 @@
exclude_names=[ nodename_resolved ], exclude_busy=True)
if rc2 is None:
+ rc2 = getRicciAgent(self, clustername,
+ exclude_names=[ nodename_resolved ])
+
+ if rc2 is None:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('ND0: unable to find ricci agent to delete %s from %s' % (nodename_resolved, clustername))
return None
@@ -589,9 +593,11 @@
def NodeFence(self, clustername, nodename, nodename_resolved):
rc = getRicciAgent(self, clustername,
exclude_names=[ nodename_resolved, nodename ], exclude_busy=True)
+
if rc is None:
rc = getRicciAgent(self, clustername,
exclude_names=[ nodename_resolved, nodename ])
+
if rc is None:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('FNF0: no ricci to fence %s for cluster %s' \
@@ -636,6 +642,7 @@
if rc is None:
rc = getRicciAgent(self, clustername, exclude_busy=True)
+
if rc is None:
rc = getRicciAgent(self, clustername)
--- conga/luci/site/luci/Extensions/LuciDB.py 2007/08/09 21:35:20 1.6.2.1
+++ conga/luci/site/luci/Extensions/LuciDB.py 2007/08/20 16:27:21 1.6.2.2
@@ -852,7 +852,7 @@
continue
if exclude_busy is True:
- if NodeBusy(self, cluname, ricci_hostname, rc) is not False:
+ if NodeBusy(self, clustername, ricci_hostname, rc) is not False:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('GRA13: %s is busy, excluding' \
% ricci_hostname)
@@ -861,7 +861,7 @@
if LUCI_DEBUG_MODE is True:
luci_log.debug('GRA14: no ricci agent could be found for cluster %s' \
- % cluname)
+ % clustername)
return None
def getClusterDBObj(self, clustername):
--- conga/luci/site/luci/Extensions/LuciZope.py 2007/08/09 21:35:20 1.4.2.1
+++ conga/luci/site/luci/Extensions/LuciZope.py 2007/08/20 16:27:21 1.4.2.2
@@ -126,7 +126,7 @@
def GetReqVars(req, varlist):
ret = {}
- from types import ListType;
+ from types import ListType
for i in varlist:
pval = None
--- conga/luci/storage/form-macros 2007/08/09 21:28:53 1.20.2.1
+++ conga/luci/storage/form-macros 2007/08/20 16:27:22 1.20.2.2
@@ -615,7 +615,7 @@
id="graphics_checkbox_id"
tal:attributes="checked mapper/graphical_view"
onchange="var s = (this.checked)?'graphical_view':'textual_view'; singleVisibleSpan('mappings_view', s);"/>
- Graphical View
+ Graphical View <small>(Uncheck if volumes are too small to select)</small>
<span id="mappings_view"
tal:define="mappings_view_classnames mapper/mappings-view_css_classnames">
@@ -1068,7 +1068,7 @@
type string:text;
value prop/value;
onkeypress python:'return validate_text_keypress(this, event, 2, \'' + prop['validation']['illegal_chars'] + '\', ' + str(prop['validation']['max_length']) + ')';
- onblur python:'validate_text(this, 2, \'' + prop['validation']['illegal_chars'] + '\', \'' + prop['validation']['reserved_words'] + '\', ' + str(prop['validation']['min_length']) + ', ' + str(prop['validation']['max_length']) + ', \'' + form_submit_button_id + '\')'"/>
+ onchange python:'validate_text(this, 2, \'' + prop['validation']['illegal_chars'] + '\', \'' + prop['validation']['reserved_words'] + '\', ' + str(prop['validation']['min_length']) + ', ' + str(prop['validation']['max_length']) + ', \'' + form_submit_button_id + '\')'"/>
@@ -1078,7 +1078,7 @@
type string:text;
size string:15;
value prop/value;
- onblur python:'validate_int(this, 2, ' + str(prop['validation']['min']) + ', ' + str(prop['validation']['max']) + ', ' + str(prop['validation']['step']) + ', \'' + prop_units + '\', \'' + form_submit_button_id + '\')'"
+ onchange python:'validate_int(this, 2, ' + str(prop['validation']['min']) + ', ' + str(prop['validation']['max']) + ', ' + str(prop['validation']['step']) + ', \'' + prop_units + '\', \'' + form_submit_button_id + '\')'"
onkeypress="return validate_int_keypress(this, event, 2)"/>
(<span tal:replace="prop/validation/min"/> - <span tal:replace="prop/validation/max"/>)
<span tal:replace="prop_units"/>
@@ -1096,7 +1096,7 @@
type string:text;
size string:15;
value value;
- onblur python:'validate_float(this, 2, ' + str(minim) + ', ' + str(maxim) + ', ' + str(step) + ', \'' + units + '\', \'' + form_submit_button_id + '\')'"
+ onchange python:'validate_float(this, 2, ' + str(minim) + ', ' + str(maxim) + ', ' + str(step) + ', \'' + units + '\', \'' + form_submit_button_id + '\')'"
onkeypress="return validate_float_keypress(this, event, 2)"/>
(<span tal:replace="minim"/> - <span tal:replace="maxim"/>)
<span tal:replace="units"/>
@@ -1422,9 +1422,15 @@
return ev.which;
}
+var pending_warning = false;
+
function display_warning(el, timeout, text)
{
- alert(text);
+ if (!pending_warning) {
+ pending_warning = true;
+ alert(text);
+ pending_warning = false;
+ }
return;
var geom_obj = getGeom(el);
--- conga/ricci/modules/cluster/Clusvcadm.cpp 2007/03/12 03:46:20 1.8.2.4
+++ conga/ricci/modules/cluster/Clusvcadm.cpp 2007/08/20 16:27:22 1.8.2.5
@@ -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<ServiceStatus>::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<ServiceStatus>::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");
}
More information about the Cluster-devel
mailing list