* [Cluster-devel] conga luci/site/Makefile luci/site/luci/Extens ...
@ 2007-08-20 16:31 rmccabe
0 siblings, 0 replies; only message in thread
From: rmccabe @ 2007-08-20 16:31 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Changes by: rmccabe at sourceware.org 2007-08-20 16:31:14
Modified files:
luci/site : Makefile
luci/site/luci/Extensions: LuciClusterActions.py LuciDB.py
LuciZope.py
luci/storage : form-macros
luci/utils : luci_admin luci_manage
ricci/modules/cluster: Clusvcadm.cpp
Log message:
Fixes from the -RHEL5 branch.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/Makefile.diff?cvsroot=cluster&r1=1.14&r2=1.15
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterActions.py.diff?cvsroot=cluster&r1=1.4&r2=1.5
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciDB.py.diff?cvsroot=cluster&r1=1.6&r2=1.7
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciZope.py.diff?cvsroot=cluster&r1=1.4&r2=1.5
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/storage/form-macros.diff?cvsroot=cluster&r1=1.23&r2=1.24
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/utils/luci_admin.diff?cvsroot=cluster&r1=1.55&r2=1.56
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/utils/luci_manage.diff?cvsroot=cluster&r1=1.3&r2=1.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/cluster/Clusvcadm.cpp.diff?cvsroot=cluster&r1=1.12&r2=1.13
--- conga/luci/site/Makefile 2007/07/16 22:21:31 1.14
+++ conga/luci/site/Makefile 2007/08/20 16:31:12 1.15
@@ -40,6 +40,8 @@
install:
install -d ${DESTDIR}/var/lib/luci
+ echo False > ${DESTDIR}/var/lib/luci/.default_password_has_been_reset
+ chmod 640 ${DESTDIR}/var/lib/luci/.default_password_has_been_reset
install -d ${DESTDIR}/var/lib/luci/bin
# install `find luci/bin -maxdepth 1 -type f` ${DESTDIR}/var/lib/luci/bin
--- conga/luci/site/luci/Extensions/LuciClusterActions.py 2007/07/27 16:43:47 1.4
+++ conga/luci/site/luci/Extensions/LuciClusterActions.py 2007/08/20 16:31:13 1.5
@@ -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/07/27 16:43:47 1.6
+++ conga/luci/site/luci/Extensions/LuciDB.py 2007/08/20 16:31:13 1.7
@@ -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/08 21:00:07 1.4
+++ conga/luci/site/luci/Extensions/LuciZope.py 2007/08/20 16:31:13 1.5
@@ -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 04:37:21 1.23
+++ conga/luci/storage/form-macros 2007/08/20 16:31:14 1.24
@@ -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/luci/utils/luci_admin 2007/08/10 18:36:31 1.55
+++ conga/luci/utils/luci_admin 2007/08/20 16:31:14 1.56
@@ -99,7 +99,17 @@
})
orig_stderr = sys.stderr
+
if '--debug' in sys.argv or '--verbose' in sys.argv:
+ try:
+ del sys.argv[sys.argv.index('--debug')]
+ except:
+ pass
+
+ try:
+ del sys.argv[sys.argv.index('--verbose')]
+ except:
+ pass
verbose = sys.stderr
else:
verbose = file('/dev/null', 'rwb+', 0)
--- conga/luci/utils/luci_manage 2007/02/05 20:08:28 1.3
+++ conga/luci/utils/luci_manage 2007/08/20 16:31:14 1.4
@@ -43,9 +43,10 @@
try:
luci = pwd.getpwnam(LUCI_USER)[2:4]
if not luci or len(luci) != 2:
- raise
- except:
- sys.stderr.write('Cannot find the \"' + LUCI_USER + '\" user.\n')
+ raise Exception, 'user does not exist'
+ except Exception, e:
+ sys.stderr.write('Cannot find the "%s" user: %s\n' \
+ % (LUCI_USER, str(e)))
return -1
try:
@@ -56,8 +57,8 @@
os.chown(LUCI_DB_PATH + i, luci[0], luci[1])
os.chmod(LUCI_DB_PATH + i, 0600)
except: pass
- except:
- sys.stderr.write('Unable to change ownership of the Luci database back to user \"' + LUCI_USER + '\"\n')
+ except Exception, e:
+ sys.stderr.write('Unable to change ownership of the Luci database to user "%s": %s\n' % (LUCI_USER, str(e)))
return -1
def luci_set_mgmt(set_state):
@@ -82,7 +83,7 @@
from Products.PlonePAS import config
from Products.PlonePAS.interfaces.plugins import IUserManagement
import BTrees.OOBTree
- ImageFile.ImageFile.__init__ = lambda x,y,z:None
+ ImageFile.ImageFile.__init__ = lambda x, y, z: None
sys.stderr = orig_stderr
try:
--- conga/ricci/modules/cluster/Clusvcadm.cpp 2007/03/12 03:45:18 1.12
+++ conga/ricci/modules/cluster/Clusvcadm.cpp 2007/08/20 16:31:14 1.13
@@ -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");
}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2007-08-20 16:31 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-20 16:31 [Cluster-devel] conga luci/site/Makefile luci/site/luci/Extens rmccabe
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).